javascript - meteor 黑客 :aggregate gives "MongoError: A pipeline stage specification object must contain exactly one field."

标签 javascript mongodb meteor

我正在尝试聚合一些简单的数据并获取我的案例中每个人的总时间。正如一些指南所建议的那样,我已将 meteor 黑客包:聚合添加到 meteor 中。但是我无法让它工作。

这是文档在 mongoDB 中的样子:

{startnumber: 1, name: "John Doe", time: 10000}
{startnumber: 1, name: "John Doe", time: 5000}
{startnumber: 2, name: "Jane Doe", time: 11000}

这就是我的聚合在 server/main.js 中的样子:

Meteor.methods({
  getTotalTime() {
    rankings.aggregate({
      $match: { startnumber: 1 },
      $group: { _id: '$name', total: { $sum: '$time' } }
    });
  }
});

期望的结果应该是:

{startnumber: 1, name: "John Doe", time: 15000}

我做错了什么?

最佳答案

每个管道阶段都应包含在其自己的文档中。添加 $project 阶段来格式化响应

.aggregate( 
   { $match: { startnumber: 1 } },
   { $group: { _id: '$name', startnumber:{ $first:'$startnumber' }, total: { $sum: '$time' } } },
   { $project: { name: '$_id', startnumber:1, total:1, _id:0 } }
)

关于javascript - meteor 黑客 :aggregate gives "MongoError: A pipeline stage specification object must contain exactly one field.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476939/

相关文章:

mongodb - Mongo按实际上是数字的字符串值排序

javascript - 使用 ng-href 查看 ng-repeat 中包含具有 objectId 的集合的示例详细信息 View

javascript - Meteor 账户 邮箱验证

javascript - 如何在回调中访问正确的“this”?

javascript - 为 mongodb REST API 编写通用查询函数

javascript - Laravel 返回渲染的 html View ,不带\r\n -- json

JavaScript、JSP 和 JSON 不适用于 POST

css - 根据语言更改字体系列

javascript - neo4j - 查找与匹配 x 长度属性值列表的 Node 有关系的所有 Node

javascript - jQuery 中的多个输入 ID 以更改父级中的一个跨度