MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Bestimmen Sie mit MongoDB effizient den Eigentümer eines Datensatzes in einer Hierarchie

Wenn Sie versuchen, Datensätze aus MongoDB basierend auf einer "Spalte" mit einem Wert aus einer Reihe möglicher Werte "auszuwählen", für deren Bestimmung Sie einen Join mit einer Benutzerverwaltungstabelle benötigen, arbeitet NoSQL gegen Sie ...

Wenn die Liste der Benutzer-IDs noch überschaubar ist, können Sie ein where ownerId in (?,?,?,?,?...) machen Art der Abfrage (nachdem zuerst die Liste bestimmt wurde):

db.documents.find({owner:{$in: [1234, 2345, 4444, 77777, 99999]}})

Der NoSQL-Weg besteht wahrscheinlich darin, Dinge zu denormalisieren, indem beispielsweise nicht nur die OwnerId in das Dokument aufgenommen wird, sondern der vollständige Pfad in der Verwaltungshierarchie nach oben:

{  _id: 'the document A',
   owner : 1234,
   managers: [ 2345, 4444, 77777, 99999 ]
}

Das muss natürlich aktualisiert werden, wenn die Benutzerhierarchie verschoben wird.