我想用$ in运算符加入两个集合。这是收集示例
如何获得如下输出:
{
"_id":10000,
"items": [
{
"_id":12345,
"productName": "laptop",
"unitPrice": 1000
},
{
"_id":54321,
"productName": "mouse",
"unitPrice": 20
}
]
}
请帮助。预先感谢。
答案 0 :(得分:1)
您可以在数组上使用$lookup,并且可以将as
指定为items
,这将覆盖现有数组。
根据文档:
如果您的localField是一个数组,则可能要在管道中添加$ unwind阶段。否则,localField和foreignField之间的相等条件为foreignField:{$ in:[localField.elem1,localField.elem2,...]}
这就是您需要的
尝试:
db.orders.aggregate([
{
$lookup: {
from: "products",
localField: "items",
foreignField: "_id",
as: "items"
}
}
])