Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Crear un índice en un documento incrustado

Puedes crear índices en documentos incrustados en su totalidad. Sin embargo, solo las queries que especifiquen todo el documento incrustado usan el índice. Las queries sobre un campo específico dentro del documento no utilizan el índice.

  • Para utilizar un índice en un documento incrustado, tu query debe especificar todo el documento incrustado. Esto puede causar comportamientos inesperados si tu modelo de esquema cambia y agregas o remueves campos de tu documento indexado.

  • Cuando consultes documentos incrustados, el orden en que especifiques los campos en la query es importante. Los documentos incrustados en tu query y en el documento devuelto deben coincidir exactamente. Para ver ejemplos de queries en documentos incrustados, consulta Query en documentos incrustados/anidados.

  • Antes de crear un índice en un documento incrustado, considera si deberías indexar campos específicos en ese documento o utilizar un índice comodín para indexar todos los subcampos del documento.

Creá una colección students que contenga los siguientes documentos:

db.students.insertMany( [
{
"name": "Alice",
"gpa": 3.6,
"location": { city: "Sacramento", state: "California" }
},
{
"name": "Bob",
"gpa": 3.2,
"location": { city: "Albany", state: "New York" }
}
] )

Crea un índice en el campo location:

db.students.createIndex( { location: 1 } )

La siguiente query utiliza el índice en el campo location:

db.students.find( { location: { city: "Sacramento", state: "California" } } )

Las siguientes consultas no utilizan el índice en el campo location porque consultan campos específicos dentro del documento incrustado:

db.students.find( { "location.city": "Sacramento" } )
db.students.find( { "location.state": "New York" } )

Para que una notación de puntos query utilice un índice, debes crear un índice en el campo incrustado específico que estás consultando, no en todo el objeto incrustado. Para ver un ejemplo, consulte Crear un índice en un campo embebido.

La siguiente query no devuelve resultados porque los campos incrustados en el predicado de la query están especificados en un orden diferente al que aparecen en el documento:

db.students.find( { location: { state: "California", city: "Sacramento" } } )