我按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,但我没有任何东西要分组。
答案 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
});