sql >> Database teknologi >  >> NoSQL >> MongoDB

$filter inde i $project MongoDB ved hjælp af Spring Data

Det lykkedes mig at løse mit problem med Spring boot version 1.4.1.RELEASE, og jeg gjorde dette:

Aggregation aggregation = newAggregation(
            match(Criteria.where("devices.evaluationDate").is(date)),
            project().and(new AggregationExpression() {
                @Override
                public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
                    DBObject filterExpression = new BasicDBObject();
                    filterExpression.put("input", "$devices");
                    filterExpression.put("as", "device");
                    filterExpression.put("cond", new BasicDBObject("$eq", Arrays.<Object> asList("$$device.evaluationDate", date)));
                    return new BasicDBObject("$filter", filterExpression);
                }
            }).as("devices")
    );

    AggregationResults<SpotMovimientos> list = mongoOperations.aggregate(aggregation,
            MyClass.class, MyClass.class);

Jeg uddybede ud fra dette:Understøtter Spring Data MongoDb $filter array aggregations operator?

Mit projekt var på Spring boot 1.4.0.RELEASE, men den version havde ikke AggregationExpression grænseflade PUBLIC, så jeg har lige opdateret til 1.4.1.RELEASE, og jeg virkede.



  1. MongoDB normalisering, fremmednøgle og joining

  2. Opdater flere dokumenter efter id-sæt. Mongoose

  3. Mongod klager over, at der ikke er nogen /data/db-mappe

  4. Spring data tilsidesætter standard serializer igen