给定以下文档:
[
{
"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]}}}}])