Добавление курсора по-прежнему не исправит MongoDB 3.6 Aggregate
MongoDB Atlas обновлен до 3,6 и сломал агрегатную функцию на сайте моего клиента. Выкинуло сообщение об ошибке "Требуется опция курсора", которое я исправил.
Тем не менее, пока ошибка исчезнет, агрегация по-прежнему не будет выполняться. Я устанавливаю console.logs до, после и внутри exec(), и запускается только "до".
Я пытаюсь получить подходящие тарифы на доставку на основе веса корзины покупок. Вот примерная частота:
[{
"_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);
Кто-нибудь может помочь?