首页 > 解决方案 > 在mongodb中查找具有最高顺序的计数和限制的不同嵌套数据

问题描述

我只想找到具有唯一数据的最高计数的 5 条记录,我在下面使用:

db.collection.aggregate(
{$unwind: '$restaurantcompetitors'},
{$unwind: '$restaurantcompetitors.competitorName'},
{$group: {_id: '$restaurantcompetitors.competitorName', count:{$sum:1}}}

)

我得到的结果如下:

{ "_id" : "Platterz.co", "count" : 1 }
{ "_id" : "ChowNow", "count" : 3 }
{ "_id" : "cater2.me", "count" : 1 }
{ "_id" : "App-App.co", "count" : 1 }
{ "_id" : "airportsherpa.io", "count" : 1 }
{ "_id" : "Eat24", "count" : 4 }
{ "_id" : "Chowbus", "count" : 5 }

但我想要:

{ "_id" : "Chowbus", "count" : 5 }
{ "_id" : "Eat24", "count" : 4 }
{ "_id" : "ChowNow", "count" : 3 }

提前致谢,

标签: node.jsmongodbmongoose

解决方案


与计数一起使用$sort,然后使用$limit

db.collection.aggregate(
  { '$unwind': '$restaurantcompetitors' },
  { '$unwind': '$restaurantcompetitors.competitorName' },
  { '$group': {
    '_id': '$restaurantcompetitors.competitorName',
    'count': { '$sum': 1    }
  }},
  { '$sort': { 'count': -1 }},
  { '$limit': 3 },
)

推荐阅读