Последователи - дизайн базы данных 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