我有一个像波纹管这样的mongo查询。结果就是我的愿望。但是当我要将其转换为spring-data查询时,说无效的过滤器引用
db.mycollection.aggregate([
{ "$match" : {--} },
{ "$sort" : { --} },
{ "$group" : { "_id" : "$sender", "senders" : { "$addToSet" : { "id" : "$_id", "seen" : "$seen" } } } },
{ "$project": {
"_id":0,
"total" : {
"$size": {
"$filter": {"input": "$senders","as": "e",
"cond": {"$eq": ["$$e.seen",false]}
}
}
}
}
}
]);
我试图将其转换为spring-data查询的是:
Aggregation aggregation = Aggregation.newAggregation(
match(Criteria
.where("receiver").is(receiver)),
sort(Sort.by("date").descending()),
group("sender")
.addToSet(new BasicDBObjectBuilder().add("id", "$_id").add("seen", "$seen").get()).as("senders"),
project()
.and("sender").previousOperation()
.and(ArrayOperators.Filter.filter("senders")
.as("s")
.by(ComparisonOperators.Eq.valueOf("s.seen")
.equalToValue(false))).size()
.as("total")
.and("....")
);
我的错是什么,我该如何解决?