返回同一字段的更多计数



给定以下文档:

[
{
"user": "A",
"feedback":"like"
},
{
"user": "B",
"feedback":"dislike"
},
{
"user": "C",
"feedback":"like"
},
{
"user": "D",
"feedback":"like"
},
{
"user": "E",
"feedback":"dislike"
},
]

我希望得到喜欢和不喜欢的计数。

在这种情况下我将得到{likesCount: 3, dislikesCount: 2}

如何使用Mongoose实现这一点?

查询
  • 假设反馈和仅为这两个值之一
  • group by null(所有集合1组)
    (null是一种常见的选择,重点是按常量分组"_id" : "hello"也会这样做)
  • 和2个总和,如果相似则加到likesCount 1,否则加0(不喜欢的也一样)

Playmongo

yourColl.aggregate(
[{"$group": 
{"_id": null,
"likesCount": 
{"$sum": {"$cond": [{"$eq": ["$feedback", "like"]}, 1, 0]}},
"dislikesCount": 
{"$sum": {"$cond": [{"$eq": ["$feedback", "dislike"]}, 1, 0]}}}}])

相关内容

  • 没有找到相关文章

最新更新