【发布时间】:2021-09-03 08:21:22
【问题描述】:
我有 2 个收藏;
//db.cities.find({})
/* 1 */
{
"_id" : ObjectId("/*...*/"),
"Name" : "Istanbul"
}
/* 2 */
{
"_id" : ObjectId("/*...*/"),
"Name" : "Ankara"
}
/* 3 */
{
"_id" : ObjectId("/*...*/"),
"Name" : "Izmir"
}
/* 4 */
{
"_id" : ObjectId("/*...*/"),
"Name" : "Eskisehir"
}
//db.dates.find({})
/* 1 */
{
"_id" : "Turkey",
"dateTime": "2021-09-03 10:25"
}
/* 2 */
{
"_id" : "England",
"dateTime": "2021-09-03 08:25"
}
我想合并两个集合,但不像inner join。
这是我想看到的结果;
//the output that I need
{
"_id" : ObjectId("/*...*/"),
"Cities": [
{
"_id" : ObjectId("/*...*/"),
"Name" : "Istanbul"
},
{
"_id" : ObjectId("/*...*/"),
"Name" : "Ankara"
},
{
"_id" : ObjectId("/*...*/"),
"Name" : "Izmir"
},
{
"_id" : ObjectId("/*...*/"),
"Name" : "Eskisehir"
}
],
"DateTime" : "2021-09-03 10:25"
}
因此,我不想在所有 cities 元素中看到 DateTime。
如何在 MongoDB v3.2 中获得此结果?
注意 1:cities 集合没有 Country 字段。我可以在查询中将Turkey 写成硬编码。
注意 2:如果可能的话,我更喜欢 aggregate 而不是 map-reduce。
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework