sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - ejemplo de referencias manuales

La documentación es bastante clara en la sección del manual a la que te refieres, que es la sección sobre Referencias de bases de datos . La parte más importante para comprender esto se encuentra en la declaración inicial de la página:

La información adicional cubre el tema de cómo podría elija ocuparse del acceso a los datos que almacena en otra colección.

Existe el DBRef especificación que, sin entrar en demasiados detalles, puede implementarse en algunos controladores de manera que, cuando se encuentren en sus documentos, recuperen (expandan) automáticamente el documento al que se hace referencia en el documento actual. Esto se implementaría "entre bastidores" con otra consulta a esa colección para el documento de ese _id.

En el caso de Referencias del manual esto básicamente dice que solo hay un campo en su documento que tiene como contenido el ObjectId de otro documento. Esto solo difiere del DBRef como algo que nunca ser procesado por una implementación de controlador base, la forma en que maneja cualquier recuperación adicional de ese otro documento depende únicamente de usted.

En el caso de:

> db.collection.findOne()

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

El ref El campo en el documento no es más que un ObjectId simple y no hace nada especial. Lo que esto le permite hacer es enviar su propia consulta para obtener los detalles del Objeto al que se refiere:

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

Tenga en cuenta que todo esto se procesa en el lado del cliente a través de la API del controlador. Nada de esto de buscar otros documentos ocurre en el servidor en ningún caso.