问题描述
文档架构
id
是加入的钥匙
{
"foo" : [
{
"properties" : {
"id" : 1
},},{
"properties" : {
"id" : 2
},}],"bar" : [
{
"id" : 1,"Metadata" : abc
},{
"id" : 2,"Metadata" : def
}
]
}
目标
{
"foo" : [
{
"properties" : {
"id" : 1,"Metadata" : abc
},{
"properties" : {
"id" : 2,"Metadata" : def
},}
解决方法
您可以在架构上使用 $lookup 并在 $unwind 和 $project 的帮助下获得所需的结果。
查询:
db.foo.aggregate({
$lookup: {
from: "bar",localField: "properties.id",foreignField: "id",as: "properties"
},},{
$unwind: {
path: "$properties",}
},{
$project: {
_id: 0,properties: 1
}
})
输出:
[
{
"properties": {
"_id": ObjectId("5a934e000102030405000000"),"id": 1,"metadata": "abc"
}
},{
"properties": {
"_id": ObjectId("5a934e000102030405000001"),"id": 2,"metadata": "def"
}
}
]