如何在mongoDB中维护数组元素的最大数量?

Ami*_*Pal 5 mapreduce mongodb morphia mongodb-query

我正在寻找一种方法来获取给定集合中特定元素的前两个(或任何其他数量)计数.

{"id": "xyz" , "fruits": ["Apple", "Mango"]}
{"id": "abx", "fruits": ["Apple", "Banana"]}
{"id" : "pqr", "fruits": ["Apple", "Mango"]}
Run Code Online (Sandbox Code Playgroud)

对于上面的例子,结果将是:Apple and Mango因为Apple(三次)的出现更高,然后是Mango(两次).我需要使用Mongo map-reduce功能吗?

我更倾向于后端平台的性能和稳定性.如果"发生次数"实时发生,我该如何前进?

任何帮助都会很明显.

Wak*_*ake 2

您可以使用聚合。这是一个简单的示例,假设水果值不会在单个文档中重复:

[
    {
        $unwind: "$fruits"
    },
    {
        $group: {
            _id: "$fruits",
            count: {$sum: 1}
        }
    },
    {
        $sort: {count:-1}
    },
    {
        $limit: 2
    }
]
Run Code Online (Sandbox Code Playgroud)