node.js - 该字段必须是mongo中的累加器对象

标签 node.js mongodb aggregation

我正在执行聚合查询。我的要求是我有以下格式的文档:

{
"name":"a","age":20},
{
"name":"b","age":23},
{
"name":"a","age":26}

我需要对姓名字段中包含“a”的所有姓名的年龄求和。 我正在执行以下操作,但它给了我一个错误:“字段‘名称’必须是累加器对象”:

db.collection('students').aggregate({
        $group: {"name": "a", "sum": {$sum: '$age'}}
    }, {
        $project: {sum: '$sum'}
    }, (e, d) => {
        if (!e) {
            var e = d.stream({transform: JSON.stringify});
            console.log("answer")
            console.log(e);
            deferred.resolve(e);
        } else {
            console.log(e)
        }
    })

最佳答案

我更改了您的聚合查询。请尝试如下:

db.collection('students').aggregate(
     [
       {
          $match: {
                 name: "a"
          }
       },
       {
         $group: {_id: "$name",
                  "sum": {
                     $sum: '$age'
                   }
                 }
        },
        {
          $project: {
                 sum: 1
        }
     ], (e, d) => {
        if (!e) {
            var e = d.stream({transform: JSON.stringify});
            console.log("answer")
            console.log(e);
            deferred.resolve(e);
        } else {
            console.log(e)
        }
    })

关于node.js - 该字段必须是mongo中的累加器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823617/

相关文章:

java - 如何在 Elasticsearch 上使用嵌套聚合?

javascript - multer 文件上传不起作用

c# - 在 MongoDB C# 驱动程序 2.2.2 中找不到 FindOne 方法

ruby-on-rails-3 - 使用 Rails 和 Mongoid 模拟连接行为

mongodb - 查找包含特定字段的文档

java - UML 图帮助(聚合/组合)

node.js - React native 与 Windows Ubuntu 子系统无法找到 Android Studio

javascript - 来自 Node js的多个系统调用

node.js - 如何通过mean.js 设置在grunt 中使用pm2?

c++ - 将一个类作为成员变量包含在另一个类中 (C++)