首页 > 解决方案 > $divide 累加器是一元运算符

问题描述

我向 Mongo DB 创建了一个请求:

{
    $project:
      {
        difference:
          {
            $subtract: ['$' + endDate, '$' + startDate]
          }
      }
  },
  {
    $match:
      {
        difference:
          {
            $gte: 0
          }
      }
  },
  {
    $group:
      {
        _id: null,
        avgTime:
          {
            $divide:
              [
                {
                  $avg: "$difference"
                }, 60000 // in minutes
              ]
          }
      }
  }

我试着:

  1. 计算结束日期和开始日期之间的差异,并将其放在 this difference> 0的位置
  2. 计算平均值
  3. 将其划分为 60000(以获取分钟数)

但我得到了错误:累加器$divide是一元运算符

我该如何解决这个请求?

标签: mongodbmongoosemongodb-queryaggregation-framework

解决方案


但我得到了错误: $divide 累加器是一元运算符

<accumulator>运算符必须是以下累加器运算符之一:accumulator -operator,并且$divideoperator 不是其中之一,

如果$avg要平均,运算符必须在 root 中,

在阶段更正您的语法$group并添加新阶段以获取$divide

  {
    $group: {
      _id: null,
      avgTime: { $avg: "$difference" }
    }
  },
  {
    $project: {
      avgTime: { $divide: ["$avgTime", 60000] }
    }
  }

推荐阅读