Followers - mongodb database design

So verwende ich mongodb und bin mir nicht sicher, ob ich das richtige / beste Design für die Datenbanksammlung für das habe, was ich versuche.

Es können viele Elemente vorhanden sein, und ein Benutzer kann mit diesen Elementen neue Gruppen erstellen. Jeder Benutzer kann jeder Gruppe folgen!

Ich habe nicht nur die Follower und Elemente zur Gruppensammlung hinzugefügt, da die Gruppe möglicherweise 5 Elemente oder 10000 Elemente (und das Gleiche für Follower) enthält, und ich bin der Meinung, dass Sie keine ungebundenen Arrays verwenden sollten (wo) das Limit ist unbekannt) aufgrund von Leistungsproblemen, wenn das Dokument aufgrund seiner expandierenden Größe verschoben werden muss. (Gibt es ein empfohlenes Maximum für Array-Längen, bevor Leistungsprobleme auftreten?)

Ich denke, mit dem folgenden Design könnte ein echtes Leistungsproblem auftreten, wenn ich alle Gruppen abrufen möchte, denen ein Benutzer für ein bestimmtes Element folgt (basierend auf der user_id und der item_id), da ich dann alle finden muss Gruppen, denen der Benutzer folgt, und aus denen finden Sie alle item_groups mit der group_id $ in und der item-ID. (aber ich kann eigentlich keinen anderen Weg sehen, dies zu tun)

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

  });

})

Gibt es bessere DB-Muster für diese Art der Einrichtung?

UPDATE: Beispiel für einen Anwendungsfall, der im Kommentar unten hinzugefügt wurde.

Jede Hilfe / Beratung wird sehr geschätzt.

Vielen Dank, Mac

Antworten auf die Frage(8)

Ihre Antwort auf die Frage