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

如何在嵌套结构集合中搜索"city"字段的值?

嵌套数组的查询方案

你的集合结构是两层嵌套数组(name数组包含带somethingelse数组的元素),针对city字段的查询可以用以下几种方式:

基础匹配(查找包含指定city值的文档)

直接使用点标记法即可匹配到所有包含目标city值的文档,语法如下:

db.yourCollectionName.find({
  "name.somethingelse.city": "NY"
})

如果之前尝试点标记法失败,检查下集合名称、字段名是否拼写正确,或者是否存在大小写不匹配的问题。

精确匹配(匹配同一嵌套元素内的多个条件)

如果需要同时匹配somethingelse数组元素里的多个字段(比如name和city),需要用$elemMatch逐层嵌套:

db.yourCollectionName.find({
  "name": {
    "$elemMatch": {
      "somethingelse": {
        "$elemMatch": {
          "name": "John",
          "city": "NY"
        }
      }
    }
  }
})

仅返回匹配的数组元素

如果不想返回整个文档,只需要获取包含目标city的somethingelse元素,可以在查询时指定投影:

db.yourCollectionName.find(
  {"name.somethingelse.city": "NY"},
  {"name.somethingelse.$": 1}
)

或者用聚合管道实现更灵活的结果筛选:

db.yourCollectionName.aggregate([
  {$unwind: "$name"},
  {$unwind: "$name.somethingelse"},
  {$match: {"name.somethingelse.city": "NY"}},
  {$project: {"name.somethingelse": 1, _id: 0}}
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11