Mongodb与Nodejs我收到错误消息“需要'cursor'选项,除了带有explain参数的聚合”

时间:2019-08-28 20:34:10

标签: node.js mongodb mongoose aggregate

我正在更新一个网站,以在NodeJS和MongoDB上构建寻宝游戏,并且记分板功能出现问题。

我的所有环境变量在本地计算机和实时站点上都是相同的,但是在部署它时出现错误

“ MongoError:“ cursor”选项是必需的,但带有说明参数的聚合除外”

以下是我正在使用的汇总

module.exports.getScores = (callback) => {
  Team.aggregate([
    { $group: {
      _id: "$code",
      name: { $first: "$name"},
      total: { $sum: "$score"}
    }}
    ], 
    (err, results) => {
      if (err) {
        callback(err);
        console.error(err);
      } else {
        callback(null, results);
      }
    }

  );
} 

我已经搜索了该问题,发现的所有解决方案似乎都不起作用,这就是我要发布的原因。

NodeJS版本:8.10.0

MongoDB版本:3.6.12

1 个答案:

答案 0 :(得分:0)

该错误消息与MongoDB 3.6中的更改有关,其中聚合需要返回游标(https://docs.mongodb.com/manual/release-notes/3.6-compatibility/#aggregate-command-and-results)。

在这种情况下,由于使用的Mongoose版本(4.8.6)未列出与MongoDB 3.6兼容而引发错误。 compatibility pages说,您需要使用5.x版本的猫鼬

有关更多信息,请参见Neil Lunn的评论here