Пример:

ичок в MongoDB, у меня есть две коллекции, как это:

1-е название коллекции

db.a.find ()

{
"_id": "1234",
"versions": [{
        "owner_id": ObjectId("100000"),
        "versions": 1,
        "type" : "info",
        "items" : ["item1","item3","item7"]
    },
    {
        "owner_id": ObjectId("100001"),
        "versions": 2,
        "type" : "bug",
        "OS": "Ubuntu",
        "Dependencies" : "Trim",
        "items" : ["item1","item7"]
    }
]}

2-я коллекция называется b

db.b.find ()

 {
    "_id": ObjectId("100000"),
    "email": "[email protected]"
  } {
    "_id": ObjectId("100001"),
    "email": "[email protected]"
 }

Ожидаемый результат:

{
"_id": "1234",
"versions":[{

        "owner_id": "[email protected]",
        "versions": 1,
        "type" : "info",
        "items" : ["item1","item3","item7"]
    },
    {
        "owner_id": "[email protected]",
        "versions": 2,
        "type" : "bug",
        "OS": "Ubuntu",
        "Dependencies" : "Trim",
        "items" : ["item1","item7"]
    }
] }

Требование: поля внутри каждого документаверсии не зафиксированы, пример:версии [0] иметь 4 пары ключ-значение иверсии [1] есть 6 пар ключ-значение. поэтому я ищу запрос, который может заменитьowner_id с участиемэлектронное письмо сохраняя все остальные поданные в выходной.

Я пытался :

db.a.aggregate(
    [
        {$unwind:"$versions"},
        {$lookup : {from : "b", "localField":"versions.owner_id", "foreignField":"_id", as :"out"}}, 
        {$project : {"_id":1, "versions.owner_id":{$arrayElemAt:["$out.email",0]}}},
        {$group:{_id:"$_id", versions : {$push : "$versions"}}}
    ]   
).pretty()

Пожалуйста помоги.

Благодарю вас!!!

Ответы на вопрос(1)

Ваш ответ на вопрос