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

MongoDB如何根据数组任意元素的条件查询文档?

MongoDB数组元素条件查询:筛选grades数组含score在10-50之间的文档

基础解决方案

要筛选出grades数组中存在任意一个元素的score值大于10且小于50的文档,MongoDB提供了简洁的查询方式,直接针对数组子字段设置条件即可:

db.collection.find({
  "grades.score": { $gt: 10, $lt: 50 }
})

原理说明

当针对grades.score设置范围条件时,MongoDB会自动遍历数组中的每个元素,只要数组里至少有一个元素满足score > 10且score < 50,整个文档就会被匹配返回,无需考虑数组的元素数量。

以你提供的示例文档为例,其中第二个grades元素的score为23,符合条件,因此该文档会被此查询返回。

扩展:多字段条件匹配

如果需要数组中存在某个元素同时满足多个字段条件(比如score在10-50之间且grade为"B"),可以使用$elemMatch操作符确保条件作用于同一个数组元素:

db.collection.find({
  "grades": {
    $elemMatch: {
      score: { $gt: 10, $lt: 50 },
      grade: "B"
    }
  }
})

这个查询只会返回grades数组中存在单个元素同时满足score范围和grade值的文档。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:55:17