如何获取子数组对象中可用的ID列表

时间:2018-12-05 15:13:22

标签: mongodb performance nosql mongodb-query aggregation-framework

StackOverflow社区,我有一个与此家伙相似的问题 How to get only List of IDs of JSON Objects?

但是我需要对MongoDB查询进行处理,因为我需要查询大量数据。

我有1个这样的对象:

{ 
"_id": ObjectId(".."),
"data": 
 [

    {
      customId : 22,
      customArr:[
           321,
           123
      ]
    },
    {
      customId : 33,
      customArr:[
           123
      ]
    },
    {
      customId : 22,
      customArr:[
      ]
    }
 ]
}

(ofc有更多数据,但这仅对此很重要) 问题: 我不知道如何获取这样的列表:

  

[22,33]

  

[123,321]

我需要这些列表来计算我的数据,但目前我完全无法计算任何东西。 我无法更改结构,因为我已经以这种格式存储了很多数据,这会破坏我的整个应用程序。

我正在使用MongoDB 3.4,因此所有3.2聚合更新都可以使用, 但我无法正常工作。

任何人都可以链接我需要阅读的文档才能完成此任务吗?或给出任何提示,我需要MongoDB函数吗?

感谢您对Advance的帮助,如果找到我会发布我的解决方案

1 个答案:

答案 0 :(得分:1)

您可以使用以下汇总

db.collection.aggregate([
  { "$project": {
    "customId": { "$setUnion": "$data.customId" },
    "customArr": {
      "$reduce": {
        "input": "$data",
        "initialValue": [],
        "in": { "$setUnion": ["$$this.customArr", "$$value"] }
      }
    }
  }}
])