Mongoose - MongoError: Нераспознанное имя этапа конвейера: '$ eq' - PullRequest
0 голосов
/ 19 февраля 2019

Когда я запускаю следующий агрегатный запрос Mongoose, я получаю сообщение об ошибке:

Запрос:

await Users.aggregate([
    { $eq: ["$bot", false] }
]);

Ошибка:

MongoError: Unrecognized pipeline stage name: '$eq'
    at queryCallback (/root/Geola/node_modules/mongodb-core/lib/cursor.js:248:25)
    at /root/Geola/node_modules/mongodb-core/lib/connection/pool.js:532:18
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickDomainCallback (internal/process/next_tick.js:218:9)

Я неправильно его использую?

MongoDB: 4.0.6
Mongoose: 5.4.13
Ubuntu: 16.04

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Оператор $eq сопоставляет документы, в которых значение поля равно указанному значению.

{ <field>: { $eq: <value> } }

Вы можете попробовать этот метод для фильтрации на основе условия

db.inventory.find( { bot: { $eq: false } } )

Подробнее в документах

Когда вы используете Aggregate.Документы поступают в многоступенчатый конвейер, который преобразует документы в агрегированные результаты. Вы должны использовать сопоставление для прохождения конвейера сопоставления в вашем случае.

Подробнее о агрегатном конвейере можно узнать здесь

0 голосов
/ 19 февраля 2019

Не знаю, почему мой оригинальный метод не сработал или почему он работает лучше, но вот что мне помогло:

await Users.aggregate([
    { $match: { $expr: { $eq: ["$bot", false] } } }
]);
...