Добавление курсора по-прежнему не исправит 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);

Кто-нибудь может помочь?

0 ответов

Другие вопросы по тегам