He leído que la incrustación es mejor desde el punto de vista del rendimiento: "Si el rendimiento es un problema, incrústelo". (http://www.mongodb.org/display/DOCS/Schema+Design) y la mayoría de las guías siempre dicen que debe contener incrustado.MongoDB incrustado vs. referencia desde la perspectiva de rendimiento
Sin embargo, no estoy seguro de que este sea el caso. Supongamos que tenemos dos objetos: Blog y Post. Blog contiene publicaciones.
Haciendo ahora todos los mensajes incrustados en el blog tendrá las siguientes cuestiones:
- Paging. Como no es posible filtrar objetos incrustados, siempre recibiremos todas las publicaciones y será necesario filtrarlas en la aplicación.
- Filtrado. Al igual que antes, al buscar palabras dentro de las publicaciones, no será posible filtrar la colección incrustada de MongoDB.
- Insertar. Supongo que insertar en la colección es más rápido que insertarlo en un objeto incrustado. ¿Es esto correcto? esto está escrito en cualquier lugar?
- Actualización. Igual que antes, el campo de actualización en línea dentro del documento más pequeño (Publicación) puede ser más rápido que la actualización en línea de la publicación dentro del documento grande de Blog. ¿Es esto correcto?
Tomando todo lo anterior, me gustaría tener publicaciones en una colección separada que hace referencia al blog. ¿Es esta la conclusión correcta?
(Nota: Por favor, no el factor límite de tamaño del documento en la respuesta, vamos a asumir cada blog tendrá como máximo 1000 mensajes)
Gracias por la respuesta detallada. – mbdev
@mbdev: de nada. –
¿Estás seguro de que el # 2 devuelve el blog con una publicación que coincide con el título? Creo que devuelve el blog que contiene una publicación con "Mongodb!" título. Entonces slice solo filtrará la primera publicación. Entonces obtendrá una publicación incorrecta – mbdev