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

MongoDB如何根据嵌套对象字段长度筛选符合要求的文档

问题解答

你说的方案是完全可以实现需求的,具体逻辑和实现方式如下:

  • 核心逻辑就是两个判断条件同时成立:
    1. data对象下的order1字段确实存在
    2. data对象的总键数为1,自然就不存在其他额外字段
  • 如果你使用MongoDB 5.0及以上版本,推荐用$expr配合$objectToArray实现,不需要提前知道其他可能出现的字段名,适配性更强:
db.你的集合名.find({
  $expr: {
    $and: [
      // 条件1:确认order1存在
      { $eq: [{ $exists: ["$data.order1", true] }, true] },
      // 条件2:确认data的总键数为1
      { $eq: [{ $size: { $objectToArray: "$data" } }, 1] }
    ]
  }
})
  • 如果你使用更老的MongoDB版本,也可以手动枚举所有可能的其他字段,判断其不存在,不过这种方式扩展性差,仅适合data下可能出现的字段完全固定的场景:
db.你的集合名.find({
  "data.order1": { $exists: true },
  "data.order2": { $exists: false },
  "data.order3": { $exists: false }
  // 其余可能出现的字段都要逐个加进来判断不存在
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 13:57:02