首页 > 解决方案 > 查找集合中某个字段的最大出现次数?

问题描述

我正在查看该站点,尽管它很愚蠢,但我没有找到解决方案。具有以下示例集合:

{
    "_id" : ObjectId("5b61d710bb0d4d1e5191fe8c"),
    "a" : [ 
        "#asd", 
        "#qwerty", 
        "#special"
    ],
    "_id" : ObjectId("5b61d69bbb0d4d1e5191fe8b"),
    "a" : [ 
        "#pretty",
    ],
    "_id" : ObjectId("5b61d710bb0d4d1e5191fe8d"),
    "a" : [ 
        "#asd", 
        "#noun", 
        "#rework"
    ],
    "_id" : ObjectId("5b61d710bb0d4d1e5191fe8e"),
    "a" : [ 
        "#asd"
    ]
}

如何获取a中出现次数最多的字符串?谢谢您的帮助。问候。

标签: mongodbaggregation-framework

解决方案


您可以使用以下聚合查询。

$unwind将数组减少为单个字符串,然后$sortbyCount对出现的次数进行分组和计数,并按降序对出现的次数进行排序。

$limit获得出现次数最多的值。

db.colname.aggregate([
  {"$unwind":"$a"},
  {"$sortByCount":"$a"},
  {"$limit":1}
])

推荐阅读