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

基于MongoDB Lookup关联第三表,按导师ID查询对应学生

MongoDB 查询指定导师的所有学生

假设你的三个集合结构如下(实际结构不同的话,调整对应字段名即可):

  • mentor:{ _id: ObjectId("xxx"), name: "张导师", ... }
  • student:{ _id: ObjectId("yyy"), name: "李学生", age: 20, ... }
  • mentor_students:{ mentor_id: ObjectId("xxx"), student_id: ObjectId("yyy") }

你可以通过聚合管道实现需求,具体查询语句如下:

db.mentor_students.aggregate([
  // 筛选目标导师的所有关联记录
  { $match: { mentor_id: ObjectId("替换为实际导师ID") } },
  // 关联student集合获取完整学生信息
  {
    $lookup: {
      from: "student",
      localField: "student_id",
      foreignField: "_id",
      as: "student_detail"
    }
  },
  // 展开学生信息数组(每条关联记录对应一个学生)
  { $unwind: "$student_detail" },
  // 将学生信息作为根文档返回,去掉冗余字段
  { $replaceRoot: { newRoot: "$student_detail" } }
])

语句说明:

  1. $match:先从关联表中过滤出指定导师的学生ID关联记录,减少后续处理的数据量。
  2. $lookup:类似SQL的JOIN操作,根据student_id关联student集合,把学生详情存入student_detail数组。
  3. $unwind:将$lookup返回的数组展开为单个文档,方便后续整理结果。
  4. $replaceRoot:把学生详情文档作为结果的根文档,直接返回干净的学生列表。

如果你的导师ID是字符串类型(非ObjectId),只需把ObjectId("xxx")替换为对应字符串即可,比如mentor_id: "123456"。

内容的提问来源于stack exchange,提问作者techy-coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:05:10