Tôi đã giải quyết được sự cố của mình với Phiên bản khởi động mùa xuân 1.4.1.RELEASE và tôi đã làm được điều này:
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);
Tôi đã giải thích dựa trên điều này:Spring Data MongoDb có hỗ trợ toán tử tổng hợp mảng $ filter không?
Dự án của tôi là khởi động Spring 1.4.0.RELEASE nhưng phiên bản đó không có AggregationExpression giao diện PUBLIC, vì vậy tôi vừa cập nhật lên 1.4.1.RELEASE và tôi đã làm việc.