【发布时间】:2021-10-27 10:20:17
【问题描述】:
给定:给我一个包含批次信息的集合。
期望:我需要返回作业的真实值的数量。
一些上下文:每个作业都被分成多个批次。在集合中:labellers 包含一个数组,其中labeller 是用户,完成表示是否有人完成了批处理,_id 指的是批处理 ID,作业包含 _id特定的工作。
所以我知道我需要放松并按作业分组,但我似乎无法让我的查询返回正确数量的真值。
收藏:
{
"_id": ObjectId("612370c2abbe776854d8c0ec"),
"batch_number": 0,
"job": ObjectId("612370c1abbe777ae8d8c0eb"),
"labellers": [
{
"labeller": ObjectId("61238ed4abbe77763ed8c100"),
"completed": true
},
{
"labeller": ObjectId("61238f2babbe77c838d8c101"),
"completed": true
}
],
"__v": 0
},
{
"_id": ObjectId("612370c2abbe771a75d8c0ed"),
"batch_number": 1,
"job": ObjectId("612370c1abbe777ae8d8c0eb"),
"labellers": [
{
"labeller": ObjectId("61238ed4abbe77763ed8c100"),
"completed": true
},
{
"labeller": ObjectId("61238f2babbe77c838d8c101"),
"completed": false
}
],
"__v": 0
}
期望的输出
{
"_id": ObjectId("612370c1abbe777ae8d8c0eb"),
"count": 3
}
我尝试过的:
db.collection.aggregate({
$unwind: "$labellers"
},
{
$group: {
_id: "$job",
count: {
$sum: {
$cond: [
{
"labellers": {
"completed": true
}
},
1,
0
]
}
}
}
})
我尝试过的输出:
{
"_id": ObjectId("612370c1abbe777ae8d8c0eb"),
"count": 4
}
【问题讨论】:
标签: mongodb mongoose mongodb-query aggregation-framework