Какой лучший способ реализовать: два отдельных массива или массив в массиве? - PullRequest
0 голосов
/ 15 февраля 2020

Мне нужен совет! У меня есть массив объектов с данными многих студентов (более 200 студентов). Итак, теперь я хочу реализовать урок для этих студентов, поэтому каждый день я буду собирать массив с данными внутри каждого массива студентов. Позже я буду работать со всеми данными урока! Итак, мой вопрос: а) Является ли лучший способ получить массив pu sh внутри каждого массива студентов? б) Или создайте другой массив с уникальным _id, а затем отфильтруйте урок по ученикам _id?

Итак, я ищу производительность и скорость ...

1 Ответ

0 голосов
/ 15 февраля 2020

Как я понял из вашей архитектуры, подходящим вариантом будет перемещение 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 в качестве поля массива).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...