sql >> Database >  >> NoSQL >> MongoDB

$filter binnen $project MongoDB Spring Data gebruiken

Het is me gelukt om mijn probleem op te lossen met de Spring boot-versie 1.4.1.RELEASE en ik deed dit:

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);

Ik werkte op basis hiervan uit:Ondersteunt Spring Data MongoDb de $filter array aggregations-operator?

Mijn project was op Spring boot 1.4.0.RELEASE maar die versie had niet de AggregationExpression interface PUBLIC, dus ik heb zojuist geüpdatet naar 1.4.1.RELEASE en ik heb gewerkt.



  1. Redis als berichtenmakelaar

  2. Projecteer het eerste item in een array naar een nieuw veld (MongoDB-aggregatie)

  3. MongoDB $sin

  4. Redis aangepaste opdrachten