MongoDB聚合管道:计数文档中的字段是否小于值?

理查德·约翰(Richard John)

我有一个使用MongoDB聚合框架的现有报告,我想在其中添加一个新字段-数字字段之一小于给定值的所有文档的计数。

我的文档有一个长度字段,我已经在计算它的平均值,因此除此以外,我还希望文档数量小于某个特定数量的字段。

我当前的聚合管道非常简单:

db.streams.aggregate([ 
  { $match: { track_id: "ecb96af4537d4263b83f5675dbcc0388" }},
  { $group: { _id: "$source", listens: { $sum: 1 } }   }
])

我已经尝试使用$sum$lt,但伯爵始终是0。我猜这是因为$sum当只有数1返回,但$lt回报率true这是我尝试的:

db.streams.aggregate([{
  $match: {
    track_id: "ecb96af4537d4263b83f5675dadd0388"
  }
}, {
  $group: {
    _id: "$source",
    listens: {
      $sum: 1
    },
    skips: {
      $sum: {
        $lt: ["$length", 1000]
      }
    }
  }
}, ])

有人知道我怎么能做到这一点吗?谢谢!

DAXaholic

您可以像这样添加嵌套条件

...
skips: {
    $sum: {
        $cond: {
            if: { $lt: ["$length", 1000]},
            then: 1,
            else: 0
        }
    }
}
...

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB-根据字段在组阶段是否具有特定值对文档进行计数

使用聚合管道基于子文档值创建具有名称的MongoDB字段?

如何在MongoDB聚合管道中隐藏单个子文档?

如何在Mongodb聚合管道中包含其他字段?

将MongoDB聚合结果重塑为字段值文档

如何在管道聚合(mongoDB)中比较文档中的两个字段

MongoDB聚合:获取引用的文档字段值

MongoDB-获取文档中每个字段的每个唯一值的计数

使用MongoDB从单独集合中的文档聚合多个字段

子文档中的猫鼬聚合管道连接字段

在$ sort聚合管道之后将字段添加到文档中,该字段使用MongoDb聚合将其索引包括在排序列表中

如何使用聚合检查MongoDB数据库中的所有文档的特定字段的最新值?

如何构建聚合管道以根据其他文档中的字段值过滤文档?

聚合管道中的嵌入式文档集合中的参考文档字段

在MongoDB聚合管道中,如何用数组字段替换root?

单个MongoDB聚合管道中具有条件的总计数和字段计数

如何在进行聚合时检查mongodb对象中是否存在键(其中键是文档中某个其他字段的值)?

使用MongoDB聚合管道计数文档

为MongoDB聚合查询中的每个文档提取大量字段

如何使用MongoDB的聚合管道从集合中的两个子文档中返回最小值?

Elasticsearch如何使用聚合对多个文档字段中的值进行计数

在MongoDB聚合管道中获取多个子计数

mongodb 管道聚合管道替换值

如何在 mongodb 聚合管道中限制 $group 中的文档?

Mongodb:是否可以从现有的字符串字段在聚合管道中创建 ISODate 字段?

MongoDB 聚合 - 如何检查文档数组中是否存在特定字段值

我可以在 MongoDB 聚合管道中获取不同字段值的计数吗?

MongoDB 聚合 - 根据属性值查找和计数文档

MongoDB:如何将所有文档合并到聚合管道中的单个文档中