【问题标题】:Mongodb With Nodejs I am getting error "'cursor' option is required, except for aggregate with the explain argument"Mongodb With Nodejs我收到错误“需要'cursor'选项,除了带有解释参数的聚合”
【发布时间】:2019-08-29 08:17:34
【问题描述】:

我正在更新一个基于 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

【问题讨论】:

  • 这可能是由于 Mongoose 的版本和在每个环境中使用的 MongoDB 驱动程序之间的差异。你能用npm ls检查每个版本吗?
  • 他们都是 ^4.8.6 他们使用相同的 package.json 并且在那里指定了 4.8.6

标签: node.js mongodb mongoose aggregate


【解决方案1】:

该错误消息与 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 的 cmets here 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-29
    • 2018-10-10
    • 2017-10-12
    • 2019-05-09
    • 1970-01-01
    • 2018-07-07
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多