【问题标题】:MongoDB Ignoring FilterMongoDB忽略过滤器
【发布时间】:2021-12-04 22:19:15
【问题描述】:

要么我遗漏了什么,要么这可能是 Node.js 驱动程序问题?

const users = await User.find({ 'test.test': { $gt: 0 } }).lean();

我的用户文档都不包含test 对象,因此没有一个应该满足此过滤器的条件。但是,它不是不返回任何文件,而是返回我所有的用户文件。根据documentation,如果没有通过/空过滤器,它应该只返回集合中的所有文档?

编辑: 我说的是忽略过滤器,因为它似乎只在对未定义的属性应用嵌套过滤器时发生。例如,如果我添加了一些文档满足的更多过滤条件,它们将*正确地应用。 示例:User.find({ username: { $exists: true }, 'test.test': { $gt: 0 } }) 仅返回存在username 的用户文档,但它们仍然没有test 对象。

【问题讨论】:

    标签: javascript node.js mongodb-query


    【解决方案1】:

    通过将 Mongoose Schema strictQuery 选项设置为 false 解决了该问题。

    https://mongoosejs.com/docs/guide.html#strictQuery

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2020-06-01
      相关资源
      最近更新 更多