Tengo curiosidad por los pros y los contras de usar subdocumentos frente a una capa más profunda en mi esquema principal:
var subDoc = new Schema({
name: String
});
var mainDoc = new Schema({
names: [subDoc]
});
o
var mainDoc = new Schema({
names: [{
name: String
}]
});
Actualmente estoy usando subdocs en todas partes, pero me pregunto principalmente sobre problemas de rendimiento o consultas que pueda encontrar.
javascript
node.js
mongodb
mongoose
ciberwombat
fuente
fuente
_id
campo? Quiero decir, ¿no es algo automático si está habilitado?_id
campo de los subdocumentos es único? (creado usando la segunda forma en la pregunta de OP)Respuestas:
Según los documentos , es exactamente lo mismo. Sin embargo, usar un esquema también agregaría un
_id
campo (siempre que no lo tenga deshabilitado), y presumiblemente usa algunos recursos más para rastrear subdocs.fuente
Si tiene esquemas que se reutilizan en varias partes de su modelo, entonces podría ser útil definir esquemas individuales para los documentos secundarios para que no tenga que duplicarse.
fuente
Debe utilizar documentos incrustados si son documentos estáticos o que no son más de unos pocos cientos debido al impacto en el rendimiento. He analizado ese tema hace un tiempo. Recientemente, Asya Kamsky, que trabaja como arquitecto de soluciones para MongoDB, había escrito un artículo sobre "uso de subdocumentos".
Espero que eso ayude a quienes buscan soluciones o las mejores prácticas.
Publicación original en http://askasya.com/post/largeembeddedarrays . Puede acceder a su perfil de stackoverflow en https://stackoverflow.com/users/431012/asya-kamsky
fuente
Básicamente, crea una variable
nestedDov
y ponla aquí.name: [nestedDov]
Versión simple:
Ejemplo JSON
Ejemplo:
fuente
Creo que esto se maneja en otros lugares mediante publicaciones múltiples en SO.
Sólo algunos:
La gran clave es que aquí no hay una respuesta única, solo un conjunto de compensaciones bastante complejas.
fuente
Hay alguna diferencia entre los dos:
El uso de un esquema anidado es útil para la validación.
El esquema anidado se puede reutilizar en otros esquemas.
fuente