Explica cómo consultar y actualizar subdocumentos con dot notation, distinguir igualdad completa de campos individuales y evitar reemplazos accidentales.
Los documentos anidados permiten agrupar datos relacionados dentro de un documento. utiliza rutas separadas por puntos para consultar, proyectar, actualizar e indexar subcampos sin comparar el subdocumento completo.
La forma plana no siempre es incorrecta, pero la forma anidada comunica que los campos forman una unidad y permite validar, proyectar y actualizar esa unidad con rutas claras.
La igualdad exacta exige que la estructura y el orden de campos sean compatibles. Si el documento contiene un campo adicional o un orden distinto, puede no coincidir.
Versiones modernas permiten ciertos usos que antes estaban restringidos, pero siguen siendo nombres problemáticos para schemas de aplicación porque colisionan con dot notation y operadores.
Evita diseñar campos como:
JavaScript
{'customer.name':'Laura','$status':'pending'}
si puedes representar la estructura correctamente.
El operador posicional $ se relaciona con el elemento que coincidió en el filtro. Para múltiples elementos o condiciones más complejas se utilizan $[] y array filters.
Dot notation es la forma principal de trabajar con rutas anidadas. Permite precisión sin comparar o reemplazar todo el subdocumento. Su semántica cambia al atravesar arrays, campos missing y tipos inconsistentes, por lo que debe diseñarse junto con schema e índices.
Comprueba lo aprendido
¿Por qué la igualdad sobre un subdocumento completo puede fallar?
¿Qué diferencia existe entre actualizar address.city y reemplazar address?
¿Cuándo necesitas $elemMatch?
¿Qué ocurre si una ruta indexada comienza a contener arrays?
¿Por qué conviene evitar campos cuyo nombre contiene puntos?