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

如何使用MongoDB嵌套对象匹配语法查询对象属性?

实现MongoDB聚合$match阶段的嵌套对象查询

针对你给出的文档结构:

{
  a: { 
   b: 1,
   c: 3
  }
}

要在aggregate的$match阶段用嵌套对象语法指定a.b或a.c的查询条件,直接按照嵌套结构编写条件即可,以下是不同场景的具体示例:

1. 单字段匹配

比如匹配a.b等于5的文档,直接嵌套书写条件:

db.col.aggregate([
  { $match: { a: { b: { $eq: 5 } } } }
])
// 简化写法($eq操作符可省略)
db.col.aggregate([
  { $match: { a: { b: 5 } } }
])

2. 多字段“与”匹配

要同时满足a.b=5且a.c=10的条件:

db.col.aggregate([
  { $match: { 
      a: { 
        b: 5,
        c: 10 
      } 
    } 
  }
])

这种写法和点符号语法的{"a.b":5, "a.c":10}完全等价,默认是逻辑与的关系。

3. 多字段“或”匹配

如果需要匹配a.b=5或a.c=10的文档,需结合$or操作符,每个条件都嵌套在a对象下:

db.col.aggregate([
  { $match: { 
      $or: [
        { a: { b: 5 } },
        { a: { c: 10 } }
      ]
    } 
  }
])

额外说明

  • 嵌套对象语法和点符号语法在$match阶段功能完全一致,MongoDB会自动解析嵌套结构对应的字段路径
  • 若使用比较操作符(如$gt、$lt、$in等),直接将操作符嵌套在对应字段下即可,示例:
// 匹配a.b大于3的文档
db.col.aggregate([
  { $match: { a: { b: { $gt: 3 } } } }
])

内容的提问来源于stack exchange,提问作者Bear Bile Farming is Torture

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 08:15:46