Что лучше в MongoDB? Хранение списка членов в виде массива в коллекции отношений объекта или группы членов

Я создаю социальное приложение с MongoDB. У меня есть сценарий, где мне нужно сохранить список пользователей в группе и их отношение к группе. Как оптимизировать способ его хранения? Я встречал 2 пути.

  • Сохранение списка пользователей внутри групповой коллекции

    {
      "groupId":"",
      "admins":[
        "1234","2345","3422"
      ],
      "moderators":[
        "3242"
      ],
      "members":[
        "2354","9865","6747"
      ]
    }
    
  • сохранение идентификатора группы, идентификатора пользователя, отношения в виде списка в отдельной коллекции в традиционном стиле

    {
      "groupId":"1234",
      "userId":"8764",
      "relation":"Admin"
    },{
      "groupId":"0987",
      "userId":"4345",
      "relation":"Member"
    },{
      "groupId":"0987",
      "userId":"3456",
      "relation":"Admin"
    },{
      "groupId":"0987",
      "userId":"7654",
      "relation":"Member"
    },{
      "groupId":"0987",
      "userId":"8765",
      "relation":"Member"
    }
    

    Мои основные запросы будут

  • перечислить членов группы с их отношением

  • искать участников по их начальному слову

  • перечислите группы, в которые входит пользователь

Какой подход будет лучше всего подходит для вышеуказанных требований.

** извините за форматирование JSON не принимает в стиле кода редактора.

0 ответов

Другие вопросы по тегам