2012-03-30 17 views

Respuesta

8

hiya ver esto: MongoDB normalization, foreign key and joining & & más http://shop.oreilly.com/product/0636920018391.do ===>http://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

MongoDB no soporta relaciones de clave externa del lado del servidor, también se desaconseja normalización. Debería incrustar su objeto hijo dentro de los objetos principales si es posible, esto aumentará el rendimiento y hacer que las claves foráneas sean totalmente innecesarias. Dicho esto, no siempre es posible , por lo que existe una construcción especial llamada DBRef que permite los objetos de referencia en una colección diferente. Esto puede ser entonces no tan rápido porque DB tiene que realizar consultas adicionales para leer objetos, pero permite el tipo de referencia de clave externa.

Aún así tendrá que manejar sus referencias manualmente. Solo mientras busca su DBRef verá si existe, la base de datos no irá a a través de todos los documentos para buscar las referencias y eliminarlas si el objetivo de la referencia ya no existe. Pero creo que eliminar todas las referencias después de eliminar el libro requeriría una única consulta por colección, no más, por lo que no es realmente difícil.

Editar actualización

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [cita] Así que crear 4 colecciones: clientes, proveedores, empleados y contactos. Usted los conecta todos juntos a través de una referencia db. Esto actúa como una clave externa. Pero esta no es la forma mongoDB de hacer las cosas. El rendimiento será penalizado. [unquote]

+1

Interesante. ¿Qué significa "incrustar objetos secundarios en el objeto principal"? ¿Eso significa que si tiene una relación de orden/artículos de línea, agregaría objetos de línea de pedido como propiedades en el documento de pedido? – McGarnagle

+1

Hiya, de hecho, creo; artículo interesante aquí - http://levycarneiro.com/tag/mongodb/ [quote] Así que creas 4 colecciones: clientes, proveedores, empleados y contactos. Usted los conecta todos juntos a través de una referencia db. Esto actúa como una clave externa. Pero esta no es la forma mongoDB de hacer las cosas. El rendimiento será penalizado. [unquote] - :) aplausos –

+0

Genial, es realmente útil Tats. En realidad, Mongo DB no es tan eficiente para implementar referencias entre objetos, según entendí. –

Cuestiones relacionadas