Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose-MongoError:无法识别的管道阶段名称:'$等式';_Node.js_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

Node.js Mongoose-MongoError:无法识别的管道阶段名称:'$等式';

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

运行以下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

不确定为什么我原来的方法不起作用,或者为什么这个方法更好,但下面是为我解决这个问题的方法:

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

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

{ <field>: { $eq: <value> } }
详情请参阅

使用聚合时。文档进入一个多阶段管道,将文档转换为聚合结果。 在您的案例中,必须使用match来传递匹配管道


您可以了解有关聚合管道的更多信息

您希望查询实现什么?@RichardLovell只想检查字段是否相等,比如
db.inventory.find( { bot: { $eq: false } } )