首页 > 解决方案 > 如何使用猫鼬计算每个国家/地区的重复次数?

问题描述

我的以下代码能够计算不同城市的数量。

获取不同的国家

    IpDetails.find().distinct('city', function(error, cities) {
    console.log(`unique cities is:, ${cities}`)
})

结果

unique cities is: Toronto, Waterloo

我的问题是,如何使用猫鼬获得多伦多和滑铁卢出现在我的数据库中的次数?有人可以建议吗?

标签: javascriptnode.jsmongodbmongoose

解决方案


您应该能够使用带有$group$sum的$aggregate来做到这一点。实际上,您可以按每个对象的值对每个对象进行分组并增加每个对象的计数:city

IpDetails.aggregate([
  { $group: { _id: "$city", count: { $sum: 1 } } }],
  function(error, groups) {
    groups.forEach(function(group) {
      console.log(`City ${group._id} appeared ${group.count} times`);
    });
  }
);

希望这会有所帮助!


推荐阅读