我有一个名为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"
]
}
请帮助
答案 0 :(得分:1)
您可以使用$addFields
来提升嵌套字段以自动展平它,然后使用$project
。在此处查看完整示例。 https://runkit.com/embed/i4pe8krhpmrm
let pipeline = [{
"$addFields": {
"bankAccountIds": "$linkedInstitutions.accounts.bankAccountId"
}
},
{ $unwind: "$bankAccountIds" },
{
"$project": {
"bankAccountIds": 1
}
}
]
结果
[ { bankAccountIds: ["nvQGQmZarySWBExXe13mTorxyzNe7Ef6BdaZQ"] } ]