sql >> Databasteknik >  >> NoSQL >> MongoDB

$filter inuti $project MongoDB med vårdata

Jag lyckades lösa mitt problem med Spring Boot Version 1.4.1.RELEASE och jag gjorde så här:

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

Jag utvecklade utifrån detta:Stöder Spring Data MongoDb $filter array aggregations operator?

Mitt projekt var på Spring boot 1.4.0.RELEASE men den versionen hade inte AggregationExpression gränssnitt PUBLIC, så jag uppdaterade precis till 1.4.1.RELEASE och jag fungerade.



  1. Kan inte ansluta till MongoDB Atlas (queryTxt ETIMEOUT)

  2. Ta bort specifika objekt från array med MongoDB

  3. Hur jag skrev en Chart-Topping-app på en vecka med Realm och SwiftUI

  4. Öppna Redis-porten för fjärranslutningar