I have 2 collections;
//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"
}
I want to combine two collections but not like inner join.
Here is the result I want to see;
//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"
}
As a result, I don't want to see the DateTime in all cities elements.
How can I get this result in MongoDB v3.2?
Note 1: The cities collection doesn't have the Country field. I can write Turkey as hardcoded in the query.
Note 2: I prefer aggregate instead of map-reduce if is it possible.