需要根据文档嵌套数组聚合和 return 结果

Need to aggregate and return results based on document nested array

我有以下文件:

{
  "_id": ObjectId("10..."),
  "ownerName": "Merchant 10",
  ...,
  "stores": [
    {
      "id": ObjectId("20..."),
      "storeName": "Store 20"
    }, 
    {
      "id": ObjectId("21..."),
      "storeName": "Store 21"
    }
  ]
},
{
  "_id": ObjectId("11..."),
  "ownerName": "Merchant 11",
  ...,
  "stores": [
    {
      "id": ObjectId("22..."),
      "storeName": "Store 22"
    }
  ]
}

是否可以根据嵌套数组“stores”聚合到 return 分页结果,并最终得到以下结果:

{
  "_id": "20...",
  "ownerName": "Merchant 10",
  "storeName": "Store 20"
}, {
  "_id": "21...",
  "ownerName": "Merchant 10",
  "storeName": "Store 21"
}, {
  "_id": "22...",
  "ownerName": "Merchant 11",
  "storeName": "Store 22"
}, 

所以基本上,我希望能够分享所有者信息,但 return 是基于商店的结果。

我尝试了另一种方法来处理商店文档,但根据我的特定要求,我最终遇到了循环依赖。

谢谢

使用unwind on stores you can flatten out the documents. After that, just project您需要的字段:

db.mycollection.aggregate( [
   { $unwind: "$stores" },
   { $project: { "ownerName": 1, "storeName": "$stores.storeName" } }
] )