Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对集合MongoDB中的出现值进行分组和计数?_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 对集合MongoDB中的出现值进行分组和计数?

Javascript 对集合MongoDB中的出现值进行分组和计数?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,希望你身体健康。我试图从我的收藏中制作一个图表,但我遇到了一个问题。如何对位置进行分组,然后计算集合中的位置数?因此,对于下面的例子,我有5个孩子,我想知道他们所有的位置,以及有多少孩子共享相同的位置,(A=2,B=2,C=1),这样我就可以绘制位置与该位置的孩子数量。总之,这里有什么地方,每个地方有多少孩子 "name": "Tom", "location": "A' "name": "

希望你身体健康。我试图从我的收藏中制作一个图表,但我遇到了一个问题。如何对位置进行分组,然后计算集合中的位置数?因此,对于下面的例子,我有5个孩子,我想知道他们所有的位置,以及有多少孩子共享相同的位置,(A=2,B=2,C=1),这样我就可以绘制位置与该位置的孩子数量。总之,这里有什么地方,每个地方有多少孩子

"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}`);
 });