【问题标题】:Mongoose - MongoError: Unrecognized pipeline stage name: '$eq'Mongoose - MongoError:无法识别的管道阶段名称:'$eq'
【发布时间】:2019-02-19 11:10:59
【问题描述】:

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

【问题讨论】:

  • 你希望查询达到什么目的?
  • @RichardLovell 只想检查一个字段是否相等,比如$eq docs

标签: node.js mongodb mongoose aggregation-framework


【解决方案1】:

不知道为什么我的原始方法不起作用,或者为什么效果更好,但这是为我解决的问题:

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

【讨论】:

    【解决方案2】:

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

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

    你可以试试这个方法根据条件过滤

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

    更多详情docs

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

    您可以了解更多关于聚合管道here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2021-02-10
      • 2019-09-01
      • 2020-10-07
      • 2016-11-09
      • 1970-01-01
      相关资源
      最近更新 更多