首页 > 解决方案 > Mongoose 从聚合返回值

问题描述

我有一个包含以下字段的架构:

架构

Brote {
  name:
  content:
  created:
  likes:
}

我想把每个文档中的点赞数加起来。我的文件中有以下查询:

Index.js

app.get('/brotes', (req, res) => {
  Brote.aggregate( 
    { $group: { 
      _id: null, 
      total: { $sum: "$likes" } } 
    } 
  , function(err, result) {
    console.log(result);
  })
})

但是没有任何东西打印到控制台。当我在 mongo 服务器上运行命令时,它可以工作,我得到

{ "_id" : null, "total" : 7 }

这是预期的输出。有人可能会看到我哪里出错了吗?总的来说,我对 mongoDB 和 Web 开发还很陌生,所以我可能只是遗漏了一些明显的东西。谢谢!

编辑:SOLVED
错误实际上与查询本身无关(这是正确的),这是我用来获取的 URL 的问题。

标签: node.jsmongodbmongoose

解决方案


首先,您应该在聚合管道中创建一个数组,如聚合([

Broke.aggregate([
{
  $group: { 
   _id: null, 
   total: { $sum: "$likes" } } 
  }
}
])
.then(result => {
   console.log(result);
}).catch(err => {
//handle error here
});

推荐阅读