gpt4 book ai didi

node.js - 如何对数组mongodb聚合执行多个$lookup

转载 作者:太空宇宙 更新时间:2023-11-04 00:03:26 24 4
gpt4 key购买 nike

如何对数组执行聚合(mongodb)$lookup

{
messages: [{
"_id" : ObjectId("5bfc43f2bbc4176ecc1c5f83"),
"text" : "text1",
"sender" : {
"id" : "36046fc2e70dd508a0bf1f36fd2daa20"
}
}, {
"_id" : ObjectId("5bfc43f2bbc4176ecc1c5f83"),
"text" : "text2",
"sender" : {
"id" : "36046fc2e70dd508a0bf1f36fd2daa22"
}
}],
"filed1": { ... },
"filed2": { ... }
}

如何从帐户集合中对发件人 ID 进行 $lookup 操作?

尝试过:

...
{
$lookup: {
from: "accounts",
localField: "messages.sender.id",
foreignField: "id",
as: "messages.sender.user"
}
}
...

最佳答案

您可以使用以下聚合

db.collection.aggregate([
{ "$unwind": "$messages" },
{ "$lookup": {
"from": "accounts",
"localField": "messages.sender.id",
"foreignField": "id",
"as": "messages.sender.user"
}},
{ "$unwind": "$messages.sender.user" }
{ "$group": {
"_id": "$_id",
"messages": { "$push": "$messages" },
"filed1": { "$first": "$filed1" },
"filed2": { "$first": "$filed2" }
}}
])

关于node.js - 如何对数组mongodb聚合执行多个$lookup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com