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

如何编写MongoDB查询条件筛选有效房屋数大于0的文档并过滤无效条目

实现方案

你可以直接使用MongoDB自带的$filter运算符完成需求,全程不需要用到unwind、group这类会拆分数组、占用大量内存的操作,几万条数据量级下完全不会触发内存超限问题。

对应查询语句

db.collection_name.find(
  // 查询条件:筛选有效房屋数量>0的文档
  {
    $expr: {
      $gt: [
        {
          $size: {
            $filter: {
              input: "$home",
              cond: { $ne: ["$$this.deleted", true] }
            }
          }
        },
        0
      ]
    }
  },
  // 结果投影:仅保留home数组中的有效房屋条目
  {
    _id: 1,
    home: {
      $filter: {
        input: "$home",
        cond: { $ne: ["$$this.deleted", true] }
      }
    }
  }
)

逻辑说明

  • 所有运算都是单文档级别执行,不需要跨文档聚合,内存占用极低,执行效率很高。
  • $filter的判断条件$ne: ["$$this.deleted", true]正好匹配你的规则:deleted字段为空、或者不存在该字段的房屋都判定为有效,只排除deleted显式等于true的条目。
  • 如果查询频率较高,你可以给home.deleted字段加索引进一步提升查询速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:18:03