这是问题,我无法得到以下结果。请看一下json并帮我解决。
这是我的数据:
[
{
"user_id": "65asdfksadjfk3u4",
"lat": 23.4343,
"long": 15.2382
}
]
目前我的结果是:
[
{
"_id": "65asdfksadjfk3u4",
"name": "Srini",
"age": 26,
"some other key": "some other values"
}
]
我需要从user_id
获取集合并将其添加到同一个数组对象中。你可以注意到我的当前结果中都删除了lat和long。
[
{
"_id": "65asdfksadjfk3u4",
"name": "Srini",
"age": 26,
"some other keys": "some other values",
"lat": 23.4343,
"long": 15.2382
}
]
答案 0 :(得分:1)
您可以附加 $lookup
阶段,通过users
字段将user_id
集合加入当前管道结果,然后使用 {{ 3}} 在 $mergeObjects
中合并来自users
的加入文档和当前结果:
db.collection.aggregate([
/* current pipeline here */
{ "$lookup": {
"from": "users",
"localField": "_id",
"foreignField": "user_id",
"as": "user"
} },
{ "$replaceRoot": {
"newRoot": {
"$mergeObjects": [
{ "$arrayElemAt": [ "$user", 0 ] },
"$$ROOT"
]
}
} },
{ "$project": { "user": 0, "user_id": 0 } }
]);