在许多模型的数组中仅计算唯一值的最佳方法是什么?假设我的模型是这样的:
{
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/