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

MongoDB - exemple de références manuelles

La documentation est assez claire dans la section du manuel à laquelle vous faites référence, à savoir la section sur Références de la base de données . La partie la plus importante pour comprendre cela est contenue dans la déclaration d'ouverture de la page :

Les informations supplémentaires couvrent le sujet de la façon dont vous pourriez choisissez de gérer l'accès aux données que vous stockez dans une autre collection.

Il y a le DBRef spécification qui, sans trop rentrer dans les détails, peut être implémenté dans certains pilotes de manière à ce que, lorsqu'ils sont trouvés dans vos documents, ils récupèrent (développent) automatiquement le document référencé dans le document actuel. Cela serait implémenté "dans les coulisses" avec une autre requête à cette collection pour le document de ce _id.

Dans le cas de Références manuelles cela signifie essentiellement qu'il n'y a qu'un champ dans votre document qui a comme contenu l'ObjectId d'un autre document. Cela ne diffère de la DBRef que comme quelque chose qui ne sera jamais être traité par une implémentation de pilote de base, c'est à vous de décider comment vous gérez toute récupération ultérieure de cet autre document.

En cas de :

> db.collection.findOne()

{
   _id: <ObjectId>,
   name: "This",
   something: "Else",
   ref: <AnotherObjectId>
}

La ref champ dans le document n'est rien de plus qu'un ObjectId simple et ne fait rien de spécial. Cela vous permet de soumettre votre propre requête pour obtenir les détails de l'objet auquel il se réfère :

> db.othercollection.findOne({ _id: <AnotherObjectId > })
{
  _id: <ObjectId>
  name: "That"
  something: "I am a sub-document to This!"
}

Gardez à l'esprit que tous ces processus du côté client via l'API du pilote. Aucune de ces récupérations d'autres documents ne se produit sur le serveur dans tous les cas.