MongoDB查询多个关联值

问题描述 投票:0回答:1
db.studentSeminar.insert({
  seminar: {
    seminarID: "sem001",
    seminarDescription: "Security in Databases.",
    seminarDate: "25-April-2020",
    prerequisite: "Year 3 standing",
    creditPoint: 3,
    seminarEnrolment: [
      { studentID: "std001", enrolmentDate: "14-April-2020" },
      { studentID: "std009", enrolmentDate: "18-April-2020" },
    ],
  },
  student: [
    {
      studentID: "std001",
      studentName: "Richard Davis",
      address: "Block 140, Bukit Batok",
      telephone: [{ handphone: "92378888", officephone: "64283333" }],
      enrolTo: [{ seminarID: "sem001", markReceived: 78 }],
    },
    {
      studentID: "std009",
      studentName: "Sharon Smith",
      address: "10 Bukit Timah Road",
      telephone: [{ handphone: "81881234", residentphone: "64123456" }],
      enrolTo: [{ seminarID: "sem001", markReceived: 80 }],
    },
  ],
});

db.studentSeminar.insert({
  seminar: {
    seminarID: "sem002",
    seminarDescription: "Concurrency in Distributed Database.",

    seminarDate: "5-May-2020",
    creditPoint: 2,
    seminarEnrolment: [
      { studentID: "std006", enrolmentDate: "30-April-2020" },
      { studentID: "std009", enrolmentDate: "18-April-2020" },
    ],
  },
  student: [
    {
      studentID: "std006",
      studentName: "Ofelia Ashley",
      address: "123, Bukit Timah",
      telephone: [{ handphone: "93858134", residentphone: "64352893" }],
      enrolTo: [{ seminarID: "sem002", markReceived: 79 }],
    },
    {
      studentID: "std009",
      studentName: "Sharon Smith",
      address: "10 Bukit Timah Road",
      telephone: [{ handphone: "81881234", residentphone: "64123456" }],
      enrolTo: [{ seminarID: "sem002", markReceived: 82 }],
    },
  ],
});

给出上述文件集合。

假设我想找出一个学生参加了多少次研讨会,在mongoDB中使用find或汇总会更好吗?

这是我尝试过的db.studentSeminar.find({“ seminar.seminarEnrollment.studentID”:“ $ value”})但没有返回任何内容

提前谢谢您

mongodb mongodb-query aggregation-framework
1个回答
0
投票

您必须使用汇总才能实现此目的。

以下查询将有所帮助:

db.studentSeminar.aggregate([
  {
    $project: {
      seminarID: "$seminar.seminarID",
      studentsAttendedCount: {
        $size: "$seminar.seminarEnrolment"
      }
    }
  }
])

输出:

[
  {
    "_id": ObjectId("5a933XXXX500YY0Z"),
    "seminarID": "sem001",
    "studentsAttendedCount": 2
  },
  {
    "_id": ObjectId("5a934XXXX50YY00Z"),
    "seminarID": "sem002",
    "studentsAttendedCount": 2
  }
]

您可以了解有关$size运算符here$project运算符here的更多信息。

注意:您可以使用$project运算符来投影其他字段。

© www.soinside.com 2019 - 2024. All rights reserved.