如何在Mongoose的单个find方法级别设置strictQuery为false
Mongoose 6 单查询绕过strictQuery限制的方法
你写的传参方式无法生效,Mongoose确实支持单条查询单独配置strictQuery规则,不需要修改Schema全局配置,但配置要放在正确的参数位置。
- 写法问题说明:
find()方法的第二个参数是字段投影配置,作用是指定查询结果要返回/排除哪些字段,你把strictQuery: false放在这个位置,会被Mongoose当成投影规则解析,完全不会触发查询配置逻辑,自然没法绕过字段检查。 - 两种可用的单查询配置方式:
- 链式调用
setOptions()挂载配置,配置仅作用于当前查询:
const archivedDocs = await myModel.find({ _archived: true }).setOptions({ strictQuery: false })- 把配置传入
find()的第三个参数(查询专属配置位),注意第二个参数传null代表不限制返回字段:
const archivedDocs = await myModel.find({ _archived: true }, null, { strictQuery: false }) - 链式调用
两种写法效果完全一致,都不会改动Schema的全局strictQuery默认值,执行查询时会保留你传入的、未在Schema中定义的_archived查询条件,正常命中数据库里的对应文档。
内容的提问来源于stack exchange,提问作者Islam Y-
相关产品推荐
相关产品推荐

