【问题标题】:Count the number of elements for a nested array in Atlas Mongo pipeline计算 Atlas Mongo 管道中嵌套数组的元素数
【发布时间】:2022-08-03 17:56:50
【问题描述】:

我有以下文档结构

_id:2
lines:Array

我想检索每个文档的 lines 项目数

{
  _id: \"$_id\",
  numberLines: {
    $size: \"$lines\"
  }
}

它不起作用!

然后我想使用聚合管道获取整个文档的 lines 项总数

    标签: mongodb mongodb-atlas atlas


    【解决方案1】:

    组只允许accumulators operations,而$size 不是其中之一。

    但是,您似乎只需要使用$project$addFields 阶段,因为您实际上并没有$grouping 任何东西。

    像这样:

    {
      $project: {
         _id: 1,
         numberLines: { $size: "$lines" }
      }
    }
    

    【讨论】:

    • 为了获得总数,我添加了一个新阶段count: { $count: '$numberLines'},但它什么也没返回
    • $count 基本上是一个特定的$group,你能解释一下你为什么要尝试$group 吗?不管你能看到this 的例子——这使用了我建议使用的$project$addFields
    • 事实上,我想得到数据库中所有文档的总行数
    • 我添加了 $group 阶段,它给出了预期的结果。谢谢@汤姆[{$project: { _id: "$_id", numberLines: { $size: "$lines" } }}, {$group: { _id: null, total: { $sum: "$numberLines" } }}]
    • 明白了,你可以像this一样简化它
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多