MongoDB: как объединить исходную запись обратно после поиска

#mongodb

#mongodb

Вопрос:

У меня есть следующие коллекции, которые я использую $lookup для объединения:

 {
  "organizations": [
      {
        "_id": 1,
        "name": "foo",
        "users": [1,2]
      },
      {
        "_id": 2,
        "name": "bar",
        "users": [1]
      }
  ],
  "users": [
      {
          "_id": 1,
          "name": "john1 smith"
      },
      {
          "_id": 2,
          "name": "bob johnson"
      }
  ]
}
 

Запрос работает нормально:

 [{
            "$lookup": {
                "from": "users",
                "localField": "users",
                "foreignField": "_id",
                "as": "members"
            }
        },
        {
            "$unwind": "$members"
        },
        {
            "$group": {
                "_id": "$_id",
                "original": { "$first": "$ROOT" },
                "members": {
                    "$push": "$members"
                }
            }
        }
    ]
 

однако результирующие organizations записи не возвращают все свои свойства без добавления original реквизита, который возвращает мне вложенность оригинала organization :

 {
        "_id": 1,
        "original": {
            "_id": 1,
            "name": "foo",
            "users": [
                1,
                2
            ],
            "members": {
                "_id": 1,
                "name": "john1 smith"
            }
        },
        "members": [
            {
                "_id": 1,
                "name": "john1 smith"
            },
            {
                "_id": 2,
                "name": "bob johnson"
            }
        ]
    }

 

Я пытаюсь вернуть все в original prop обратно в корень вместе с новым members массивом.

Комментарии:

1. Каков ваш ожидаемый результат

2. Я пытаюсь перенести все содержимое original объекта в корень, чтобы корневые реквизиты объекта стали _id , name , users , members

3. Если вы выполняете только поиск, все будет в корне. Я не понимаю, почему вы делаете unwind и group!!

4. @varman Я думаю, что, возможно, я что-то перепутал изначально и пошел по пути, думая, что мой первоначальный запрос не сработал. Спасибо.