Получить глубоко вложенное значение из монго - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть коллекция под названием user, которая имеет связанные учреждения, поскольку банки и банки имеют несколько учетных записей. Схема ниже изображает структуру. Я хочу просто получить все банковские идентификаторы в массиве, как показано ниже.

Коллекция пользователей

{
        "userId" : "user1",
        "linkedInstitutions" : [
            {
                "_id" : ObjectId("5e91b32107d234196029c55c"),
                "institutionId" : "ins_3",
                "accounts" : [
                    {
                        "status" : "open",
                        "_id" : ObjectId("5e91b32107d234196029c55d"),
                        "bankAccountId" : "nvQGQmZarySWBExXe13mTorxyzNe7Ef6BdaZQ",
                        "type" : "depository",
                        "balances" : {
                            "available" : 100,
                            "current" : 110,
                            "isoCurrencyCode" : "USD",
                            "limit" : null
                        }
                    }
                ]
            }
        ]
    }

Я хочу получить вывод в таком формате

{
   "bankAccountIds":[
      "nvQGQmZarySWBExXe13mTorxyzNe7Ef6BdaZQ",
      "bZzGzeBvMLHWMzaZXoxvT4vr8mAe9KtVw5RE6"
   ]
}

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

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете использовать $addFields, чтобы поднять вложенное поле для автоматического выравнивания, а затем $project. Смотрите полный пример здесь. https://runkit.com/embed/i4pe8krhpmrm

let pipeline = [{
    "$addFields": {
      "bankAccountIds": "$linkedInstitutions.accounts.bankAccountId"
    }
  },
  { $unwind: "$bankAccountIds" },
  {
    "$project": {
      "bankAccountIds": 1
    }
  }
]

Результат

[ { bankAccountIds: ["nvQGQmZarySWBExXe13mTorxyzNe7Ef6BdaZQ"] } ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...