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);
有人可以帮忙吗?