从mongo检索深度嵌套的值

时间:2020-04-11 14:07:14

标签: mongodb mongoose

我有一个名为user的集合,由于银行和银行具有多个帐户,该集合已链接了机构。下面的模式描述了结构。我只想获取数组中的所有bankaccountIds,如下所示。

用户集合

{
        "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 个答案:

答案 0 :(得分:1)

您可以使用$addFields来提升嵌套字段以自动展平它,然后使用$project。在此处查看完整示例。 https://runkit.com/embed/i4pe8krhpmrm

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

结果

[ { bankAccountIds: ["nvQGQmZarySWBExXe13mTorxyzNe7Ef6BdaZQ"] } ]