Javascript 对集合MongoDB中的出现值进行分组和计数?
希望你身体健康。我试图从我的收藏中制作一个图表,但我遇到了一个问题。如何对位置进行分组,然后计算集合中的位置数?因此,对于下面的例子,我有5个孩子,我想知道他们所有的位置,以及有多少孩子共享相同的位置,(A=2,B=2,C=1),这样我就可以绘制位置与该位置的孩子数量。总之,这里有什么地方,每个地方有多少孩子Javascript 对集合MongoDB中的出现值进行分组和计数?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,希望你身体健康。我试图从我的收藏中制作一个图表,但我遇到了一个问题。如何对位置进行分组,然后计算集合中的位置数?因此,对于下面的例子,我有5个孩子,我想知道他们所有的位置,以及有多少孩子共享相同的位置,(A=2,B=2,C=1),这样我就可以绘制位置与该位置的孩子数量。总之,这里有什么地方,每个地方有多少孩子 "name": "Tom", "location": "A' "name": "
"name": "Tom",
"location": "A'
"name": "Sarah",
"location": "B'
"name": "Jane",
"location": "C'
"name": "HIllary",
"location": "A'
"name": "Mat",
"location": "B'
编辑这里是我的代码
router.get('/contact', function (req, res) {
const locations = Kids.aggregate([
{
$group: {
_id: {
continent: "$locations",
},
count: {
$sum: 1,
},
},
}
])
locations.forEach(function(item) {
console.log(`${item._id.province} num of kids is: ${item.count}`);
});
res.render('contact');
});
与步骤无关的“逻辑”(如何处理值)(将值存储在变量中并执行“操作”)
如何(提纲)
示例-按大陆划分的简单国家/地区收集组使用
(使用compass
学习本主题非常好)
我们的数据(4个国家:意大利、英国、尼日利亚、巴西及其大陆)
步骤1/3-探索您的聚合
产出3组(欧洲(第2组)、非洲(1组)、南美洲(1组))
步骤2/3-导出代码
从GUI到代码
导出
复制粘贴
步骤3/3-aggregate()方法和cursoer.forEach()方法
相关代码(假设您使用node连接MongoDB实例)
循环并抛出光标:
aggregate_cursor .forEach(function(item) {
console.log(`${item._id.continent} num of countries is: ${item.count}`);
});
输出:
相关文件:
- 聚合:
- 光标。forEach:
谢谢你,当我记录结果时,我得到了{{{{{u管道:{{{{u-group:{{u-id:“$location”,“count:{{{sum:1}}}}}}],“options:{}}}`当我将其记录为字符串时,我得到了{{{u-pipeline:[{{{{{'$group:[Object]}],{u-model:model{Kids},options:{}}}‘我不知道下一步要做什么。不太确定你把它记录在哪里?我就是这么做的:var locations=Kids.aggregate([{$group:{{u id::$location],count:{$sum:1}}}]);然后我记录:console.log(位置);聚合将光标返回到聚合管道操作的最后阶段生成的文档。你可以在光标上使用count()
。@EzraSiton当我这样做的时候,我得到了相同的结果:[object object]这就是我现在得到的结果感谢这么多或详细的答案,我甚至还读了文档,但我得到的是:locations.forEach不是一个函数我不确定我做错了什么。我把我的整个路线都贴在了问题上。
{
_id: {
continent: "$continent"
},
count: {
$sum: 1,
}
}
const aggregate_cursor = db.collection("test_listing").aggregate([
{
$group: {
_id: {
continent: "$continent",
},
count: {
$sum: 1,
},
},
}
])
aggregate_cursor .forEach(function(item) {
console.log(`${item._id.continent} num of countries is: ${item.count}`);
});