猫鼬-MongoError:无法识别的管道阶段名称:'$ eq'

时间:2019-02-19 01:16:46

标签: node.js mongodb mongoose aggregation-framework

当我运行以下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
猫鼬:5.4.13
Ubuntu:16.04

2 个答案:

答案 0 :(得分:1)

不知道为什么我原来的方法不起作用,或者为什么这个方法更好,但这是为我解决的办法:

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

答案 1 :(得分:0)

$eq运算符匹配字段值等于指定值的文档。

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

您可以尝试使用此方法根据条件进行过滤

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

docs

中的更多详细信息

使用聚合时。文档进入多阶段管道,该管道将文档转换为汇总结果。 您必须使用match来传递匹配管道。

您可以了解有关聚合管道here

的更多信息