mongodb - 在 mongodb 中使用等效计数来查找出现次数最多的顶级用户

标签 mongodb aggregation-framework

我的 mongoDB 数据格式为

{ "_id" : ObjectId("5284a1ac5fac01f0099cc6a8"), "date" : ISODate("2013-11-15T12:40:53Z"), "data_id" : "data_1", "application_id" : "myapplication", "user" : "user_1"}

{ "_id" : ObjectId("5284a1ac5fac01f0099cc6a8"), "date" : ISODate("2013-11-16T12:40:53Z"), "data_id" : "data_2", "application_id" : "myapplication", "user" : "user_2"}

{ "_id" : ObjectId("5284a1ac5fac01f0099cc6a8"), "date" : ISODate("2013-11-16T12:40:53Z"), "data_id" : "data_3", "application_id" : "myapplication", "user" : "user_1"}

我想找到在 mongoDB 中拥有最多条目的前 10 个用户。我如何使用聚合的 $group$sortcount 命令来实现这一点。

最佳答案

您可以按如下方式进行:

  1. 您必须对用户进行分组并计算条目的出现次数
  2. 使用 $sort 参数,您可以按条目数降序排序
  3. 通过使用 $limit,您可以检索前 10 个用户。

    db.myCollection.aggregate(
        {$group : {_id : "$user", "count" : {$sum : 1}}},
        {$sort : {"count" : -1}},
        {$limit : 10}
    )
    

关于mongodb - 在 mongodb 中使用等效计数来查找出现次数最多的顶级用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946594/

相关文章:

node.js - Mongoose 如何编写带if条件的查询?

mongodb - 从 mongodb 聚合获取深度嵌套数组并包含在结果中

arrays - MongoDB聚合匹配非空数组

Mongodb 在一次往返中执行多个查询

javascript - 使用 Node.jS 驱动程序在 MongoDB 中迭代多个集合并比较结果

java - 使用 mongo 聚合合并文档中的数组

MongoDB elemmatch数组中的多个元素

java - MongoDb 使用聚合查询 Java 代码

node.js - MongoDB 没有为嵌套模式添加默认日期?

MongoDB : count number of documents from multiple collections?