如何聚合忽略相同值的数据?

时间:2015-10-15 20:08:50

标签: mongodb aggregation-framework

鉴于我有以下articles集合:

[
   { "title" : "Title 1", "score" : 80 },
   { "title" : "Title 2", "score" : 85 },
   { "title" : "Title 3", "score" : 85 },
   { "title" : "Title 4", "score" : 90 }
]

如何使用聚合框架(结果应为2)获得分数大于82的文章数量,而不计算相等的值(在示例中:85) 想法是获得文章的排名。

是否有比使用双重聚合更简单的解决方案(第一个中的组分数,然后进行计数)?

1 个答案:

答案 0 :(得分:0)

好吧,我似乎找到了答案。这是解决方案:

db.articles.aggregate( [
  { $match: { score: { $gt: 82 } } },
  { $group: { _id: '$score' } },
  { $group: { _id: null, count: { $sum: 1 } } }
] );

任何其他解决方案也是受欢迎的,但这个解决方案似乎非常简单。