TypeError: callback.apply не является функцией после allowDiskUse - PullRequest
0 голосов
/ 08 июня 2018

У меня есть коллекция, содержащая 1 миллион документов ... Я передал опцию для allowDiskUse, и теперь она выдает ошибку

TypeError: callback.apply is not a function

Я искал это, но могполучить решение ... Пожалуйста, помогите

const pictures = await Picture.aggregate([
      { $sort: { createdAt: -1 }},
      { $group: {
        _id: { $dateToString: { format: "%Y-%m-%d", date: "$createdAt" } },
        pictures: {
          $push: {
            _id: '$_id',
            image: '$image',
            time: { $dateToString: { format: "%H:%M:%S", date: "$createdAt" } }
          }
        }
      }},
      { $limit: 50 },
      { $project: {
        _id: false,
        createdAt: '$_id',
        pictures: '$pictures'
      }}
    ], { allowDiskUse: true })

Версия Mongodb - 3,6

Версия Mongoose - 5.0

1 Ответ

0 голосов
/ 08 июня 2018

Потому что это "мангуст".В методе Mongoose API нет блока "options" для метода aggregate().Это ссылка на источник, а затем документация .Обратите внимание на возвращенный тип <Aggregate>.

Это цепочка allowDiskUse(true), как показано в документации:

await Model.aggregate(..).allowDiskUse(true).exec()

Вы должны действительноникогда не нужно использовать опцию в большинстве агрегатов.Получение предупреждающего сообщения обычно является показателем того, что вы на самом деле пропускаете индекс, или действительно какую-либо вменяемую попытку $match и фильтрации результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...