MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Déterminez efficacement le propriétaire d'un enregistrement dans une hiérarchie avec MongoDB

Si vous essayez de "sélectionner" des enregistrements de MongoDB en fonction d'une "colonne" ayant une valeur parmi un ensemble de valeurs possibles que vous auriez besoin d'une jointure avec une table de gestion des utilisateurs pour déterminer, alors NoSQL travaille contre vous...

Si la liste des identifiants d'utilisateurs est toujours gérable, vous pouvez faire un where ownerId in (?,?,?,?,?...) type de requête (après avoir préalablement déterminé la liste) :

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

La méthode NoSQL consiste probablement à dénormaliser les choses, par exemple en incluant non seulement le ownerId dans le document, mais le chemin complet vers le haut de la hiérarchie de gestion :

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

Bien sûr, cela devra être mis à jour lorsque la hiérarchie des utilisateurs sera modifiée.