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

MongoDB如何查询数组内嵌对象中的数组是否包含指定值

你可以直接使用MongoDB的嵌套数组查询语法实现需求,两种常用写法如下:


基础查询写法(推荐新手使用)

假设你的集合名为players,需要查询的年份为2021,对应语句:

db.players.find({
  "teams": {
    $elemMatch: {
      "years": 2021
    }
  }
})

如果要查询其他年份,直接把代码里的2021替换成目标年份即可,比如查询2006年就改成years: 2006。


简化写法(效果完全一致)

MongoDB针对单条件的嵌套数组查询提供了语法糖,也可以直接这么写:

db.players.find({
  "teams.years": 2021
})

原理解释

  • 两种写法都会自动遍历teams数组下的所有对象,只要任意一个对象的years数组包含目标年份,就会返回整条文档,刚好匹配你的需求
  • 如果后续需要增加额外过滤条件,比如同时要求球员在指定年份效力的队伍为MIN,就必须用$elemMatch同时匹配多个条件,示例如下:
// 查找2021年在MIN队效力的球员
db.players.find({
  "teams": {
    $elemMatch: {
      "name": "MIN",
      "years": 2021
    }
  }
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:39:02