[英]Why does renaming a field in a child array of objects in mongodb returning an array when using $project in aggregate function?
我的查詢像這樣使用聚合 function 進行查找:
this.document.aggregate([
{
$lookup : {
from: "projects",
localField: "_id",
foreignField: "organization_id",
as: "projects",
},
},
{
$lookup : {
from: "accounts",
localField: "accounts",
foreignField: "_id",
as: "organization_accounts",
},
},
{
"$project": {
"_id" : false,
"id": "$_id",
"name": 1,
"email": "$email",
"projects.id": "$projects._id",
"projects.name" : 1,
"projects.organization_id" : 1,
"organization_accounts._id" : 1,
"organization_accounts.first_name" : 1,
"organization_accounts.last_name" : 1,
"organization_accounts.email" : 1,
"organization_accounts.main_org_id" : 1,
}
}
])
但是 output 是這樣的:
"id": "5ec69acbc072871bb03dd773",
"email": "organization email",
"name": "Organization name",
"projects": [
{
"name": "project 1",
"organization_id": "5ec69acbc072871bb03dd773",
"id": [
"5ec6a08342ad5b0a28ba6876"
]
}
],
"organization_accounts": []
我已經嘗試應用這個問題的解決方案,但它似乎不起作用或 idk。
projects.id 字段應該是字符串而不是數組。
PS:剛到 mongoDB
您必須 $unwind 嵌入式 arrays。 您將獲得每個文檔的數組長度的笛卡爾積。 例子
this.document.aggregate([
{
$lookup : {
from: "projects",
localField: "_id",
foreignField: "organization_id",
as: "projects",
},
},
{
$lookup : {
from: "accounts",
localField: "accounts",
foreignField: "_id",
as: "organization_accounts",
},
},
{
"$project": {
"_id" : false,
"id": "$_id",
"name": 1,
"email": "$email",
"projects.id": "$projects._id",
"projects.name" : 1,
"projects.organization_id" : 1,
"organization_accounts._id" : 1,
"organization_accounts.first_name" : 1,
"organization_accounts.last_name" : 1,
"organization_accounts.email" : 1,
"organization_accounts.main_org_id" : 1,
}
},
{
$unwind: "$projects"
},
{
$unwind: "$projects.id"
}
])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.