मैं स्प्रिंग बूट संस्करण 1.4.1 के साथ अपनी समस्या को हल करने में कामयाब रहा। रिलीज और मैंने यह किया:
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);
मैंने इसके आधार पर विस्तार से बताया:क्या स्प्रिंग डेटा MongoDb $filter array एग्रीगेशन ऑपरेटर का समर्थन करता है?
मेरा प्रोजेक्ट स्प्रिंग बूट 1.4.0 पर था। लेकिन उस संस्करण में AggregationExpression नहीं था इंटरफ़ेस सार्वजनिक, इसलिए मैंने अभी 1.4.1.रिलीज़ में अपडेट किया और मैंने काम किया।