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

MongoDB查询:如何筛选指定字段值非空对象的文档

解决方案

方法1:直接匹配非空对象(最简写法)

直接使用$ne运算符排除空对象即可,如果需要同时保证object1字段一定存在,可以额外加上$exists判断:

// 仅过滤object1为空对象的文档,无object1字段的文档也会被返回
db.collection.find({
  "object1": { $ne: {} }
})

// 同时要求object1字段存在,且不为空对象
db.collection.find({
  "object1": { $exists: true, $ne: {} }
})

方法2:通过判断对象键数量实现(兼容性更强)

如果需要更灵活的对象内容判断逻辑,可以用$expr结合$objectToArray、$size计算对象的键数量,只要键数大于0就说明不是空对象:

db.collection.find({
  $expr: {
    $gt: [ { $size: { $objectToArray: "$object1" } }, 0 ]
  }
})

补充说明

  • 两种方法都可以精准过滤掉object1为{}的文档,仅返回类似doc2的符合要求的结果
  • 如果需要筛选嵌套字段的非空判断,只需要把字段路径对应修改即可,比如要判断object1.object2不为空,把字段名替换为object1.object2即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:36:03