簡體   English   中英

為什么在使用 $project 聚合 function 時重命名 mongodb 中的子對象數組中的字段返回數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM