组中的MongoDB最大结果

时间:2015-06-25 17:13:26

标签: mongodb max aggregation-framework

我按mvid对结果进行了分组,并计算了每组中出现的次数。

db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}}
])

现在,我想选择最大计数组。这是我天真的猜测:

db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$max: "count"}
])
显然,它会产生错误。我需要使用max with group,但我没有任何东西要分组。

2 个答案:

答案 0 :(得分:3)

还可以对结果进行排序,然后仅使用第一个元素:

db.some_details.aggregate([
{$group: {_id: "$mvid", count: {$sum: 1}}},
{$sort: {"count": -1}},
{$limit: 1 }
])

与chridam的解决方案相比,我看到的优势在于您还可以获得具有最大计数的组的ID,但我希望它更慢(未经过测试)。

答案 1 :(得分:2)

聚合管道允许您包含另一个$group运算符管道,它可以为您提供所有组的最大计数:

// post.controller.js
var slug = require('slug');
slug.defaults.mode ='pretty';

Post.getUnique('urlSlug', slug(post.title).toLowerCase(), '-')
  .then(function(uniqueSlug) { 
    console.log('A new unique slug:', uniqueSlug);
    // assuming inserting title 'title', the results would be
    // title, title-2, title-3, etc
  });