Pregunta

He encontrado varias situaciones en las que utilizan MongoDB que requieren el uso de DBRefs. Sin embargo, también me gustaría para almacenar en caché algunos campos del documento referenciado en el propio DBRef.

{$ref:'user', $id:'10285102912A', username:'Soviut'}

Por ejemplo, puede querer tener el nombre de usuario disponibles a pesar de que el documento se hace referencia a usuario. Esto me proporcionaría todos los beneficios de un enfoque único documento; Más rápido consultar y eliminando la necesidad de hacer desreferenciar Manual en mi código. Mientras que al mismo tiempo permitir que utilice referencias donde tienen sentido.

La idea es que cuando el documento se hace referencia se actualiza (un usuario cambia su nombre, por ejemplo) mi capa de negocio puede actualizar automáticamente todos los documentos que hacen referencia a él.

En última instancia, me pregunto si se considera buena forma para almacenar campos adicionales en mis DBRefs? Va a romper nada? Voy a perder mis datos cada vez que se vuelve a escribir una referencia? Serán pilotos como pymongo apoyarlo?

¿Fue útil?

Solución

En última instancia, me pregunto si se considera buena forma para almacenar campos adicionales en mis DBRefs?

Podría ser más limpio para tener por separado "caché" y los campos "REF" ... depende uno lo que sus datos son similares.

¿Perderé mis datos cada vez que una referencia se vuelve a escribir?

Se podría, pero no si se tiene cuidado. Si está actualizando la base de datos ref subobjeto, sólo asegúrese de que está actualizando los campos específicos que desea actualizada, no sobrescribir todo el subobjeto.

Recuerde que las referencias ya que son sólo objetos normales. La referencia de base de datos es un estándar, no es un tipo especial.

Los conductores como pymongo lo apoyan?

dereferencing ayudantes del conductor seguirá funcionando. Los ayudantes sólo hacer un findOne con la ref y $ $ campos id.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top