鉴于我有以下articles
集合:
[
{ "title" : "Title 1", "score" : 80 },
{ "title" : "Title 2", "score" : 85 },
{ "title" : "Title 3", "score" : 85 },
{ "title" : "Title 4", "score" : 90 }
]
如何使用聚合框架(结果应为2
)获得分数大于82的文章数量,而不计算相等的值(在示例中:85)
想法是获得文章的排名。
是否有比使用双重聚合更简单的解决方案(第一个中的组分数,然后进行计数)?
答案 0 :(得分:0)
好吧,我似乎找到了答案。这是解决方案:
db.articles.aggregate( [
{ $match: { score: { $gt: 82 } } },
{ $group: { _id: '$score' } },
{ $group: { _id: null, count: { $sum: 1 } } }
] );
任何其他解决方案也是受欢迎的,但这个解决方案似乎非常简单。