【问题标题】:Count unique values within model's Array in MongoDB在 MongoDB 中计算模型数组中的唯一值
【发布时间】:2015-12-17 06:56:28
【问题描述】:

在许多模型的数组中只计算唯一值的最佳方法是什么?假设我的模型是这样的:

{
  myKey: [
    "idnumber1000",
    "idnumber1001",
    "idnumber1005",
  ]
}

我有大约 10.000 个,但 myKey 的值不同。我想知道,对于一组给定的集合,我有多少不同的值。

我最初的想法是将所有模型加载到内存中,然后使用 Node.js 进行计算。但是由于我的数据集可以增长很多(大约 30-50K),这会消耗我机器中的大量内存。这是唯一的方法吗,还是有其他方法?

我在 Node.js 中使用 Mongoose

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    您可以使用简单的aggregate 管道来做到这一点:

    MyModel.aggregate([
        // Project just the myKey field as that's all that's needed
        {$project: {_id: 0, myKey: 1}},
        // Duplicate each doc, once per myKey element
        {$unwind: '$myKey'},
        // Group on myKey and get a count
        {$group: {_id: '$myKey', count: {$sum: 1}}}
      ],
      function(err, results) {...}
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-01
      • 2014-04-16
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2022-11-15
      相关资源
      最近更新 更多