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

Kotlin下Firestore如何根据对象数组元素查询指定学生的所有课程

以下是MongoDB场景下的查询方案:

先确认集合存储结构

你给出的结构映射到MongoDB的文档结构一般如下,每个课程对应一条独立文档:

// 数学课程文档
{
  "courseName": "Math",
  "id": 1001,
  "students": [
    {"id": 100, "name": "Alex"},
    {"id": 101, "name": "mark"}
  ]
}
// 物理课程文档
{
  "courseName": "Physics",
  "id": 1002,
  "students": [
    {"id": 100, "name": "Alex"},
    {"id": 103, "name": "arnold"}
  ]
}

按学生姓名查询(以Alex为例)

直接使用嵌套数组字段匹配语法即可,只要课程的学生数组里存在对应姓名的学生,该课程就会被查询出来:

db.Courses.find(
  // 查询条件:学生数组中存在name为Alex的元素
  { "students.name": "Alex" },
  // 配置返回字段,只返回课程名和课程ID,不需要_id
  { "courseName": 1, "id": 1, "_id": 0 }
)

返回结果如下:

{ "courseName" : "Math", "id" : 1001 }
{ "courseName" : "Physics", "id" : 1002 }

按学生ID查询(更推荐,避免同名问题)

如果存在同名学生,用唯一的学生ID查询更精准,以Alex的学生ID100为例:

db.Courses.find(
  { "students.id": 100 },
  { "courseName": 1, "id": 1, "_id": 0 }
)

查询结果和按姓名查询结果一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:45:03