Spring bootバージョン1.4.1.RELEASEで問題を解決し、これを実行しました:
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);
これに基づいて詳しく説明しました:Spring DataMongoDbは$filter配列集計演算子をサポートしていますか?
私のプロジェクトはSpringboot1.4.0.RELEASEでしたが、そのバージョンには AggregationExpressionがありませんでした インターフェイスPUBLICなので、1.4.1.RELEASEに更新したところ、動作しました。