如何在MongoDB聚合中同时使用$group和$cond?
我有下面这样的收藏如何在MongoDB聚合中同时使用$group和$cond?,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有下面这样的收藏 { "userId" : "1", "feedbackGiven" : true } { "userId" : "1", "feedbackGiven" : false } { "userId" : "1", "feedbackGiven" : true } { "userId" : "2", "feedbackGiven" : false } { "userId" : "2", "feedbac
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "1",
"feedbackGiven" : false
}
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "2",
"feedbackGiven" : false
}
{
"userId" : "2",
"feedbackGiven" : true
}
{
"_id" : "1",
"feedbackGiven" : [
true,
false,
true
]
}
{
"_id" : "2",
"feedbackGiven" : [
false,
true
]
}
{
"_id" : "1",
"totalFeedbackGive" : 3,
"falseFeedbackCount" : 1
}
{
"_id" : "2",
"totalFeedbackGive" : 1,
"falseFeedbackCount" : 1
}
我需要在userId上对其进行分组,并获得两个值,即totalGivenFeedback计数和false feedbackgive计数
我试着在下面提问
db.collection.aggregate([
{
$group: { _id: "$userId", feedbackGiven: { $push : "$feedbackGiven"} }
}
])
这将产生如下结果
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "1",
"feedbackGiven" : false
}
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "2",
"feedbackGiven" : false
}
{
"userId" : "2",
"feedbackGiven" : true
}
{
"_id" : "1",
"feedbackGiven" : [
true,
false,
true
]
}
{
"_id" : "2",
"feedbackGiven" : [
false,
true
]
}
{
"_id" : "1",
"totalFeedbackGive" : 3,
"falseFeedbackCount" : 1
}
{
"_id" : "2",
"totalFeedbackGive" : 1,
"falseFeedbackCount" : 1
}
我可以从JavaScript代码中使用上述结果获得总反馈和错误反馈计数
但我的问题是,有没有一种方法可以使用MongoDB查询获得它
我期待的结果如下
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "1",
"feedbackGiven" : false
}
{
"userId" : "1",
"feedbackGiven" : true
}
{
"userId" : "2",
"feedbackGiven" : false
}
{
"userId" : "2",
"feedbackGiven" : true
}
{
"_id" : "1",
"feedbackGiven" : [
true,
false,
true
]
}
{
"_id" : "2",
"feedbackGiven" : [
false,
true
]
}
{
"_id" : "1",
"totalFeedbackGive" : 3,
"falseFeedbackCount" : 1
}
{
"_id" : "2",
"totalFeedbackGive" : 1,
"falseFeedbackCount" : 1
}
有人能给我一个解决方案吗?你可以使用下面的方法
因此,在应用stage之后,需要使用累加器来计算文档数
其次,您需要使用累加器统计错误反馈的文档数