添加光标仍然无法修复MongoDB 3.6 Aggregate

时间:2018-06-03 06:17:55

标签: node.js mongodb mongoose aggregation-framework mongodb-3.6

MongoDB Atlas升级到3.6并打破了我客户网站上的聚合功能。它抛出了"光标选项是必需的"错误,我修复了。

然而,当错误消失时,聚合仍然不再运行。我在exec()之前,之后和之内设置了console.logs,并且只在'之前设置了'一个人开火。

我试图根据购物车的重量检索符合条件的运费:以下为采样率:

[{
  "_id": "123abc",
  "name":"Free Shipping",
  "rateInfo:[{
   "from":0,
   "to":10000000,
   "rate":0}]
},
{
  "_id": "890xyz",
  "name":"Standard Shipping",
  "rateInfo:[{
   "from":0,
   "to":10000000,
   "rate":10}]
}]

这是MongoDB调用(使用Mongoose):

var data = req.body.data;
    data = JSON.parse(data);
    var weight = JSON.stringify(data.weight);

ShippingModel.aggregate([
  {"$unwind": "$rateInfo"},
  {
    "$match": {
      "$and": [
        {
          'rateInfo.to': {"$gte": weight}
        },
        {
          'rateInfo.from': {"$lte": weight}
        }
      ]
    }
  },
  {
    "$project": {name: 1, _id: 0, "rate": "$rateInfo.rate"}
  },
  {cursor: {}}
]).exec(function(err, shippingRates) {

    //error handling and JSON response

    res.json(shippingRates);

  }
});

我还尝试在exec()之前使用链接游标:

]).cursor({}).exec(function(...

我已尝试设置批量大小。设置解释选项不会起作用:

  },
  {explain: true}
]).exec(

我也尝试将其设置为变量,但即使这样也无效。

let rates = ShippingModel.aggregate([pipeline]).exec(); 
console.log(rates);

有人可以帮忙吗?

0 个答案:

没有答案