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

Spring Boot Data中按嵌套Map的Key查询MongoDB集合

按嵌套Map的Key查询MongoDB文档

针对你要查询obj中包含指定Key的需求,有两种实用方案:

方案1:使用$exists操作符(最简单直接)

如果已知要查询的具体Key(比如"A"),直接用点语法结合$exists判断该字段是否存在即可,不管字段值是什么:

db.your_collection_name.find({"obj.A": {$exists: true}})

这个语句会返回所有obj中包含"A"这个Key的文档,完全匹配你的示例场景。

方案2:聚合管道(适合动态Key或复杂场景)

如果你的Key是动态生成的,或者需要更灵活的判断逻辑,可以用聚合管道处理:

  1. 先用$objectToArray把obj转换成键值对数组(每个元素结构为{k: "Key名称", v: "对应值"})
  2. 再用$match匹配数组中包含指定Key的文档
  3. 最后移除临时生成的数组字段(可选)

示例代码:

db.your_collection_name.aggregate([
  {
    $addFields: {
      tempObjKeys: { $objectToArray: "$obj" }
    }
  },
  {
    $match: {
      "tempObjKeys.k": "A"
    }
  },
  {
    $project: {
      tempObjKeys: 0 // 移除临时字段,不影响原文档结构
    }
  }
])

你之前尝试的{"obj.?": ?}写法不符合MongoDB的查询语法,所以无法生效,改用上面的两种方法就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:32:08