You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose中find方法过滤条件失效问题排查

问题原因分析

1. Mongoose严格查询机制过滤了未定义字段

你创建Schema时传入的是空对象{},没有声明age字段的结构。Mongoose 6+版本默认开启strictQuery选项,该规则会直接忽略所有Schema中未定义的查询条件字段,导致你设置的{age:'28'}被丢弃,等同于执行无过滤的find()操作,因此返回了全部数据。

2. 查询条件类型与数据库存储类型不匹配

从返回结果可以看出,数据库中age字段存储的是数字类型(如27、40),但你的查询条件里写的是字符串'28'。MongoDB是强类型数据库,字符串和数字属于不同类型,不会被判定为相等,即使解决了Schema的问题,这个条件也无法匹配到目标数据。

修复方案
  • 完善Schema定义,明确字段类型:
const dbSchema = mongoose.Schema({
  age: Number // 声明age为数字类型
}, { collection: 'users' })
  • 修正查询条件的类型,使用数字匹配:
dbModel.find({ age: 28 }, { age: 1 }, (err, res) => {
    console.log(res)
})

内容的提问来源于stack exchange,提问作者Cihan Sulu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 06:54:32