Seguidores - mongodb database design

Portanto, estou usando o mongodb e não tenho certeza se tenho o melhor / correto design de coleção de banco de dados para o que estou tentando fazer.

Pode haver muitos itens, e um usuário pode criar novos grupos com esses itens. Qualquer usuário pode seguir qualquer grupo!

Não adicionei apenas os seguidores e os itens à coleção do grupo, pois pode haver 5 itens no grupo ou 10000 (o mesmo para os seguidores) e, a partir de pesquisas, acredito que você não deve usar matrizes não acopladas (onde as limite é desconhecido) devido a problemas de desempenho quando o documento precisa ser movido devido ao tamanho em expansão. (Existe um valor máximo recomendado para comprimentos de matriz antes de encontrar problemas de desempenho?)

Eu acho que, com o design a seguir, um problema de desempenho real pode ser quando eu quero obter todos os grupos que um usuário está seguindo para um item específico (com base no user_id e item_id), porque então tenho que encontrar todos os grupos o usuário está seguindo e a partir disso encontre todos os grupos de itens com o group_id $ in e o ID do item. (mas não vejo outra maneira de fazer isso)

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);

  });

})

Existem padrões de banco de dados melhores para lidar com esse tipo de configuração?

UPDATE: Exemplo de caso de uso adicionado no comentário abaixo.

Qualquer ajuda / conselho será realmente apreciada.

Muito obrigado, Mac

questionAnswers(4)

yourAnswerToTheQuestion