Node.js Mongoose-MongoError:无法识别的管道阶段名称:'$等式';
运行以下Mongoose聚合查询时,出现错误: 查询:Node.js Mongoose-MongoError:无法识别的管道阶段名称:'$等式';,node.js,mongodb,mongoose,aggregation-framework,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_mo
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不确定为什么我原来的方法不起作用,或者为什么这个方法更好,但下面是为我解决这个问题的方法:
await Users.aggregate([
{ $match: { $expr: { $eq: ["$bot", false] } } }
]);
$eq
运算符匹配字段值等于指定值的文档
{ <field>: { $eq: <value> } }
详情请参阅
使用聚合时。文档进入一个多阶段管道,将文档转换为聚合结果。
在您的案例中,必须使用match来传递匹配管道
您可以了解有关聚合管道的更多信息您希望查询实现什么?@RichardLovell只想检查字段是否相等,比如
db.inventory.find( { bot: { $eq: false } } )