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

Mongoose使用$exists:true查询返回无目标字段文档问题求助

问题分析与解决方案

核心问题:字段名拼写错误

你所有查询里用的字段是definiton,但Schema和目标文档中实际对应的字段是definition(少了一个字母i)。MongoDB会直接忽略不存在的查询字段,导致你的筛选条件完全无效,自然会返回所有文档,包括不含definition的条目。

修正后的代码

将查询字段名修正为正确的definition即可:

for await (const expression of Expression.find({'definition': { $exists: true }})) {
  console.log(Utils.stringize(expression))
}

其他写法的修正版本:

  • 使用$ne: null的正确写法:
    Expression.find({'definition': { $ne: null }})
    
  • 使用where链式调用的正确写法:
    Expression.find().where('definition').exists(true)
    

验证建议

可以直接在MongoDB Shell中执行以下命令,快速确认筛选逻辑是否正常:

db.expressions.find({ definition: { $exists: true } })

如果返回结果均包含definition字段,说明字段名修正后逻辑生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 06:30:26