Последователи - дизайн базы данных mongodb

Поэтому я использую mongodb и не уверен, что у меня есть правильный / лучший дизайн коллекции баз данных для того, что я пытаюсь сделать.

Элементов может быть много, и пользователь может создавать новые группы с этими элементами. Любой пользователь может подписаться на любую группу!

Я не просто добавил последователей и элементы в коллекцию группы, потому что в группе может быть 5 элементов или 10000 (и то же самое для последователей), и из исследований я считаю, что вы не должны использовать несвязанные массивы (где предел неизвестен) из-за проблем с производительностью, когда документ должен быть перемещен из-за его увеличивающегося размера. (Есть ли рекомендуемый максимум для длины массива, прежде чем затронуть проблемы производительности?)

Я думаю, что со следующим дизайном реальная проблема производительности может быть, когда я хочу получить все группы, за которыми пользователь следует для определенного элемента (на основе user_id и item_id), потому что тогда я должен найти все группы пользователь следует, и оттуда найдите все item_groups с group_id $ in и идентификатором элемента. (но я не вижу другого способа сделать это)

Follower
.find({ user_id: "54c93d61596b62c316134d2e" })
.exec(function (err, following) {
  if (err) {throw err;};

  var groups = [];

  for(var i = 0; i<following.length; i++) {
    groups.push(following[i].group_id)
  }

  item_groups.find({
  'group_id': { $in: groups },
  'item_id': '54ca9a2a6508ff7c9ecd7810'
  })
  .exec(function (err, groups) {
    if (err) {throw err;};

    res.json(groups);

  });

})

Есть ли лучшие образцы БД для работы с этим типом установки?

ОБНОВЛЕНИЕ: пример использования добавлен в комментарии ниже.

Любая помощь / совет будут по достоинству оценены.

Большое спасибо, Mac

Ответы на вопрос(0)

Ваш ответ на вопрос