1
任何人都可以幫助我將這個mongoDB聚合轉換爲彈簧數據mongo嗎?從MongoDb聚合查詢中創建Spring Data Aggregation
我試圖在每個邀請文檔中獲取未提醒的與會者電子郵件列表。
得到它在mongo shell中工作,但需要在Spring數據mongo中完成。
我的殼查詢
db.invitation.aggregate(
[
{ $match : {_id : {$in : [id1,id2,...]}}},
{ $unwind : "$attendees" },
{ $match : { "attendees.reminded" : false}},
{ $project : {_id : 1,"attendees.contact.email" : 1}},
{ $group : {
_id : "$_id",
emails : { $push : "$attendees.contact.email"}
}
}
]
)
這是我想出了,你可以看到,它的工作不是在流水線的一個項目,集團化運作的預期。生成的查詢如下。
聚合對象創建
Aggregation aggregation = newAggregation(
match(Criteria.where("_id").in(ids)),
unwind("$attendees"),
match(Criteria.where("attendees.reminded").is(false)),
project("_id","attendees.contact.email"),
group().push("_id").as("_id").push("attendees.contact.email").as("emails")
);
它創建下面的查詢通過聚合對象生成
查詢
{ "aggregate" : "__collection__" , "pipeline" : [
{ "$match" : { "_id" : { "$in" : [id1,id2,...]}}},
{ "$unwind" : "$attendees"},
{ "$match" : { "attendees.reminded" : false}},
{ "$project" : { "_id" : 1 , "contact.email" : "$attendees.contact.email"}},
{ "$group" : { "_id" : { "$push" : "$_id"}, "emails" : { "$push" : "$attendees.contact.email"}}}]}
我不知道用聚合的正確方法在春季數據組mongo。
有人可以幫我請或提供與$推等組聚合鏈接?