Seguidores - diseño de la base de datos mongodb

Así que estoy usando mongodb y no estoy seguro de tener el mejor / mejor diseño de colección de base de datos para lo que estoy tratando de hacer.

Puede haber muchos elementos, y un usuario puede crear nuevos grupos con estos elementos. ¡Cualquier usuario puede seguir a cualquier grupo!

No solo he agregado los seguidores y los elementos a la colección del grupo porque podría haber 5 elementos en el grupo, o podría haber 10000 (y lo mismo para los seguidores) y, según la investigación, creo que no debe usar matrices no vinculadas (donde el límite desconocido) debido a problemas de rendimiento cuando el documento tiene que ser movido debido a su tamaño expansivo. (¿Existe un máximo recomendado para las longitudes de matriz antes de llegar a problemas de rendimiento de todos modos?)

Creo que con el siguiente diseño, un problema de rendimiento real podría ser cuando quiero obtener todos los grupos que un usuario sigue para un elemento específico (basado en user_id y item_id), porque entonces tengo que encontrar todos los grupos el usuario lo sigue y, desde allí, encuentre todos los grupos de elementos con el id de grupo $ in y la identificación del elemento. (pero en realidad no puedo ver ninguna otra forma de hacerlo)

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

  });

})

¿Hay mejores patrones de DB para lidiar con este tipo de configuración?

ACTUALIZACIÓN: Ejemplo de caso de uso agregado en el comentario a continuación.

Cualquier ayuda / consejo será muy apreciada.

Muchas gracias Mac

Respuestas a la pregunta(4)

Su respuesta a la pregunta