【问题标题】:Query to get top 10 users from MongoDb in Spring查询获取 Spring 中 MongoDb 的前 10 名用户
【发布时间】:2020-12-11 13:44:09
【问题描述】:

所以基本上我有一个看起来像这样的集合(省略其他字段):

[{
 user: mail1@test.com
},

{
 user: mail1@test.com
},
{
 user: mail1@test.com
},
{
 user: mail2@test.com
},
{
 user: mail2@test.com
},
{
 user: mail3@test.com
}

]

我正在寻找一种查询 MongoDB 的方法,以获取前 10 名活跃用户(DB 中记录最多的用户)。有没有一种简单的方法来获得这个,也许只是使用界面?

【问题讨论】:

    标签: spring mongodb spring-boot


    【解决方案1】:

    也许一个简单的组聚合会给你所需的结果?

    db.Users.aggregate(
    [
        {
            $group: {
                _id: "$user",
                count: { $sum: 1 }
            }
        },
        {
            $sort: { count: -1 }
        },
        {
            $limit: 10
        },
        {
            $project: {
                user: "$_id",
                _id: 0
            }
        }
    ])
    

    【讨论】:

      【解决方案2】:

      有一个叫做$sortByCount的东西用于聚合。

      List<UserCount> getTop10UserCount() {
        return mongoTemplate.aggregate(
          newAggregation(
            User.class,
            sortByCount("user"),
            limit(10),
            project("_id", "count")
          ), 
          UserCount.class
        );
      }
      
      static class UserCount {
        String _id;
        Integer count;
        // constructors, getters or setters..
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 2021-03-21
        • 1970-01-01
        相关资源
        最近更新 更多