структура данныхКак извлечь поддокументами ссылки в MongoDB
"classrooms" : [
{
id : ObjectId("class1")
"students" : [
ObjectId("student1")
],
},
{
id : ObjectId("class2")
"students" : [
]
}
],
"students" : [
{
"id" : ObjectId("student1"),
"firstname" : "Ciljan",
"age" : NumberInt(23)
},
{
"id" : ObjectId("student2"),
"firstname" : "John",
"age" : NumberInt(19)
}
]
Необходимость
я должен предоставить документ, где есть классы и студенты. Студенты могут быть назначены в определенную классную комнату, но не всегда, поэтому студент может освободиться. С предыдущей структурой данных у меня есть поддокумент «ученики», который предоставляет список всех доступных студентов, назначенных и не назначенных. Я могу назначить ученика классу, хранящему идентификатор студента в массиве учеников классов.
Проблема
Как я могу получить эти данные для того, чтобы иметь для каждого класса всех записей о назначенных своих студентах?
Возможно, эта функция «заполнения» не существует для родного драйвера MongoDB Node.js. Может быть, эта команда для Мангуста? –
модуль mongoose имеет «заселение», уже встроенное: http://mongoosejs.com/docs/api.html#document_Document-populate Рассматривая ваш фрагмент, похоже, что классные комнаты и студенты являются частью более крупной схемы, в в этом случае вам понадобится плагин с глубоким населением: https://www.npmjs.com/package/mongoose-deep-populate Как только вы зарегистрируете плагин с помощью схемы, вызов LargerSchema.find ({}) .deepPopulate ('classrooms classrooms.students') –
Большое спасибо, хотя я должен использовать только ** MongoDB Node.js Native Driver **, а не Mongoose. Модуль, который вы связываете, всегда связан с модой Mongoose, который для моей логической реализации я не могу использовать. Может быть, я должен сделать это сам. –