假设我有以下两个集合:
学生
{
"_id": "1234",
"name": "Theodo"
}
卡片
{
"student_id": "1234",
"given_date": "11.10.2019"
}
然后我需要像这样更新学生的信息
db.students.find_one_and_update({"_id": "1234"}, {"$set":{"name": "Matt"}}, return_document=ReturnDocument.AFTER)
这很酷,它返回这个;
[
{
"_id": "1234",
"name": "Matt"
}
]
但是想象一下UI需要这样的信息;
[
{
"_id": "1234",
"card_given_date": "11.10.2019",
"name": "Matt"
}
]
所以我需要用聚合来检索它;
db.students.aggregate([
{
"$lookup": {
"from": "cards",
"localField": "_id",
"foreignField": "student_id",
"as": "student_card"
}
},
{
"$unwind": "$student_card"
},
{
"$set": {
"card_given_date": "$student_card.given_date"
}
},
{
"$unset": "student_card"
}
])
我的问题是我必须更新,然后用聚合检索它。如果我可以在update
操作后获得文档,我可以做些什么来聚合返回的文档,以便摆脱第二个retrieve
操作吗?
1条答案
按热度按时间0s0u357o1#
原则上,如果运行MongoDB版本〉5.1,就可以做到这一点
但是我不知道python是否支持
db.aggregate([ { $documents: ... } ])
。