Как я понял из вашей архитектуры, подходящим вариантом будет перемещение lessons
в отдельную коллекцию и сохранение lesson._id
в students[].lessons
. Вы можете достичь этого, используя свойство ref в своей схеме mon goose.
Вот пример:
lessons
данные сбора:
[
{
"_id": ObjectId("5a934e000102030405000001"),
"name": "First lesson"
},
{
"_id": ObjectId("5a934e000102030405000002"),
"name": "Second lesson"
}
]
groups
сбор данных:
[
{
"_id": ObjectId("5a934e000102030405000003"),
"name": "Group 1",
"students": [
{
"_id": ObjectId("5a934e000102030405000004"),
"name": "John",
"lessons": [ObjectId("5a934e000102030405000001")]
},
{
"_id": ObjectId("5a934e000102030405000005"),
"name": "James",
"lessons": [ObjectId("5a934e000102030405000001"), ObjectId("5a934e000102030405000002")]
}
]
}
]
Но я бы также переместил каждый student
в отдельный сбор students
, если это возможно (если у вас в настоящее время students
в качестве поля массива).