MongoDB: ¿es necesario DBREF?

Usando el tipo de datos DBREF en MongoDB, un documento puede verse como se muestra a continuación. Pero tener el campo $ref en cada fila parece redundante, ya que cada fila obviamente apunta a la colección de users .

¿Hay alguna manera de hacer referencia a otros documentos sin tener el $ref -field algo redundante?

 { $id: {$oid : "4f4603820e25f4c515000001"}, title: "User group", users: [ {_id: {$ref: "users", $id: { $oid: "4f44af6a024342300e000002"}}, isAdmin: true } ] ], 

En mi opinión, Dbref debe evitarse cuando trabaje con mongodb, al menos si trabaja con sistemas grandes que requieren escalabilidad.

Como sé, todos los controladores hacen una solicitud adicional para cargar DBRef, por lo que no es ‘ unirse ‘ a la base de datos, es muy caro.

¿Hay alguna manera de hacer referencia a otros documentos sin tener el campo $ ref algo redundante?

Sí, tenga en cuenta las referencias, cree convenciones de denominación para ‘ claves externas ‘ (algo así como RefUserId o simplemente UserId) y almacene solo la identificación del documento al que se hace referencia. Cargue los documentos referenciados usted mismo cuando sea necesario. También mantén los ojos abiertos para cualquier desnormalización, incrustación que puedas hacer, porque generalmente mejora mucho el rendimiento.

A menos que use métodos específicos del controlador para acceder a dbref , debería ser innecesario.

En los casos en los que administra la unión manualmente (es decir, sabe a qué otra colección “unirse”), almacenar solo ObjectId es suficiente.

De los documentos :

Las referencias manuales son una alternativa, y los documentos dicen que las referencias manuales son preferibles a las DREF ( aunque no estoy seguro de por qué ). Los DBREF son útiles cuando el objeto al que se hace referencia vive en otra base de datos o donde el nombre de la colección no sería obvio.

La desnormalización / incrustación es preferible a cualquier tipo de enlace porque luego se obtienen actualizaciones atómicas y no es necesario volver a consultar los datos relacionados.

    Intereting Posts