#node.js #mongodb #aggregate #mongo-shell
#node.js #mongodb #агрегировать #mongo-оболочка
Вопрос:
Я пытаюсь использовать .aggregate() с другими методами оболочки mongo, и я получил необработанное предупреждение PROMISEREJECTIONWARNING: TypeError: User.find(…).select(…).sort (…).aggregate не является функцией
const users = await User
.find(findParams)
.select(userResponse)
.sort(sortParams)
.aggregate(([
{
$project:{
dateCreated: {$dateToString: {format: "%G-%m-%d %H:%M:%S", date: "$dateCreated"}},
}
}
]))
.exec()
Но, когда я использую .aggregate() без других методов, он работает идеально.
const users = await User
.aggregate(([
{
$project:{
dateCreated: {$dateToString: {format: "%G-%m-%d %H:%M:%S", date: "$dateCreated"}},
}
}
]))
.exec()
Могу ли я вставить его другими методами, но без получения этой ошибки.
Спасибо
Ответ №1:
В первом блоке кода вы пытаетесь применить метод db.collection.aggregate() к курсору, который возвращается методом find(). Курсоры — это те, которые в основном возвращаются из методов сбора, таких как find(), aggregate() и больше здесь.
Во втором блоке кода вы непосредственно применяете aggregate() к коллекции User. Вот почему это работает. И да, вы можете делать все, что угодно, выбирать, сортировать, ограничивать с помощью aggregate(), даже не используя эти методы курсора здесь. Надеюсь, это поможет, чувак. Хорошего дня!