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

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


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

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

我将Mongoose与Node.js结合使用

最佳答案

您可以使用简单的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) {...}
);

关于node.js - 在MongoDB中计算模型数组中的唯一值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34322369/

10-09 22:07