如何计算集合中数组内真正布尔值的数量并按 MongoDB 中的作业分组?

亚历克斯V101

给定:我得到一个包含批次信息的集合。

期望:我需要返回工作的真值数量。

一些上下文:每个作业都被分成多个批次。在集合中: Thelabellers包含一个数组,其中 thelabeller是用户,completed 表示是否有人完成了批次,_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
  }
土生土长的
  • $filter迭代labellers.completed布尔数组的循环并过滤真实结果
  • $size 在上述过滤操作中获得总元素返回
  • $groupjob和总和元素计数
db.collection.aggregate([
  {
    $group: {
      _id: "$job",
      count: {
        $sum: {
          $size: {
            $filter: {
              input: "$labellers.completed",
              cond: "$$this"
            }
          }
        }
      }
    }
  }
])

操场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从mongoDB中的数组中获取不同的值并按ID将它们分组

mongodb中的多个分组

如何根据布尔字段将查询分组并在MongoDB中按布尔值分别检索所有记录?

我应该如何在mongodb中存储布尔值?

如何对MongoDB集合中的对象进行分组

如何计算mongodb中两个集合中字段的不同值的数量

MongoDB按数组字段中的值分组

MongoDB - 如何按日期分组并计算数组中的元素

在mongoDB中按属性分组

MongoDB | 如何在对象数组中计算属性的特定值并按属性分组

如何计算Mongodb集合中数组内对象的元素存在的文档数

在mongodb中按数组元素分组

在Mongodb中按数组元素分组

如何在mongodb中对布尔字段进行分组?

在MongoDB中获取分组的值总和

如果任何嵌套数组项满足 mongoDB 中的条件,则项目布尔值

如何在 mongoDB 中取消嵌套和分组集合

MongoDB中项目对象存在布尔值

哪个在mongodb中消耗更多的内存布尔值或整数?

按计数分组以获取集合中的布尔值

Flutter - 计算只有布尔值的动态列表中真实布尔值的数量

计算数组中的元素数量并为mongodb中集合的每个文档求和?

如何将在Python中创建的布尔值传递给MongoDB?

如何计算mongodb集合中的文档数

mongodb中多个按查询分组

mongodb将字段分组到列表中

查询以基于条件与mongodb中的分组依据

在mongodb中的分组之上排序

在mongodb中对组查询的结果进行分组