El storedSource opción en una búsqueda de MongoDB La definición de índice especifica los campos del documento fuente que MongoDB Search debe almacenar. Puede configurar storedSource para mejorar el rendimiento de las consultas en ciertos casos de uso, ya que reduce la necesidad de realizar búsquedas implícitas en la base de datos backend durante la consulta. Puede almacenar campos de todos los tipos de campo de MongoDB Search en MongoDB Search.
MongoDB Search no indexa los campos almacenados, por lo que debe indexarlos por separado para poder ejecutar consultas en ellos. También puede recuperar los campos almacenados al realizar una consulta con la opción returnStoredSource.
Nota
storedSource solo está disponible en clústeres que ejecutan MongoDB 7.0+.
Para obtener más información sobre cómo recuperar los campos almacenados, consulte Devolver campos de origen almacenados.
Sintaxis
La storedSource opción tiene la siguiente sintaxis en una definición de índice:
1 { 2 "storedSource": true | false | { 3 "include" | "exclude": [ 4 "<field-name>", 5 ... 6 ] 7 } 8 }
opciones
La opción storedSource toma una valor booleano o un objeto en la definición del índice.
Boolean Values
Valor | Descripción |
|---|---|
| Especifica que MongoDB Search debe almacenar todos los campos de los documentos. Almacenar documentos completos podría afectar significativamente el rendimiento durante la indexación y las consultas. Para obtener más información, consulte Almacenamiento de campos de origen. Esto no se admite si la definición de índice contiene un campo de tipo vectorial. En su lugar, utilice |
| Especifica que MongoDB Search no debe almacenar el documento fuente original. Este es el valor predeterminado para la opción |
Objeto
El objeto de opción storedSource debe contener uno de los siguientes campos:
Campo | Tipo | Descripción |
|---|---|---|
| matriz de cadenas | Lista que contiene los nombres de campo o las rutas de acceso a los campos, separadas por puntos. Además de los campos especificados, MongoDB Search también almacena |
| matriz de cadenas | Lista que contiene los nombres de campo o las rutas de acceso a los campos, separadas por puntos, que se excluirán del almacenamiento. Si se especifica, MongoDB Search almacena los documentos originales, excepto los campos enumerados aquí. Si la definición del índice contiene un campo de tipo vector, debe excluir el |
Ejemplos
Los siguientes ejemplos de índices utilizan los campos en la colección sample_mflix.movies para demostrar cómo configurar los campos para almacenar en MongoDB Search utilizando la opción storedSource. Puedes usar mongosh, el Editor Visual de Atlas UI o el Editor JSON de Atlas UI para configurar los índices.
➤ Utilice el menú desplegable Seleccione su idioma para configurar la interfaz para el procedimiento en esta página.
El siguiente ejemplo almacena únicamente los campos title y awards.wins en los documentos de la colección. Después de seleccionar el método de configuración preferido, seleccione la colección movies en la base de datos sample_mflix.
Haga clic Refine Your Index para configurar su índice.
En la sección Stored Source Fields, haga clic en Specified.
Seleccione
awards.winsdel menú desplegable en la columna Field Name y haga clic en Add.Haga clic en Add Field para especificar otro campo para almacenar.
Seleccione
titledel menú desplegable en la columna Field Name y haga clic en Add.Haga clic en Save Changes.
Añada las líneas 5 a 10 del siguiente ejemplo a la definición del índice para almacenar los campos especificados en MongoDB Search. El ejemplo utiliza la notación de punto para especificar campos anidados.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": { 6 "include": [ 7 "title", 8 "awards.wins" 9 ] 10 } 11 }
El siguiente ejemplo almacena todos los campos excepto directors y imdb.rating en los documentos de la colección. Después de seleccionar el método de configuración preferido, seleccione la colección movies en la base de datos sample_mflix.
Se debe hacer clic en Refine Your Index para configurar el índice.
En la sección Stored Source Fields, haga clic en All Except Specified.
Seleccione
directorsdel menú desplegable en la columna Field Name y haga clic en Add.Haga clic en Add Field para especificar otro campo para excluir.
Seleccione
imdb.ratingdel menú desplegable en la columna Field Name y haga clic en Add.Haga clic en Save Changes.
Agrega las líneas 5 a 10 del siguiente ejemplo a la definición del índice para excluir los campos especificados. El ejemplo utiliza la notación de puntos para especificar campos anidados.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": { 6 "exclude": [ 7 "directors", 8 "imdb.rating" 9 ] 10 } 11 }
El siguiente ejemplo almacena todos los campos de los documentos de la colección. Después de seleccionar el método de configuración preferido, seleccione la colección movies en la base de datos sample_mflix.
Se debe hacer clic en Refine Your Index para configurar el índice.
En la sección Stored Source Fields, haga clic en All.
Haga clic en Save Changes.
Agregue la línea 5 del siguiente ejemplo a la definición del índice para almacenar todos los campos.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": true, 6 }
El siguiente ejemplo para el espacio de nombres sample_mflix.movies almacena solo los campos title y awards.wins en los documentos en mongot:
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": { "include": [ "title", "awards.wins" ] } } )
El siguiente ejemplo para el espacio de nombres sample_mflix.movies almacena todos los campos excepto directors y imdb.rating en los documentos.
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": { "exclude": [ "directors", "imdb.rating" ] } } )
El siguiente ejemplo para el espacio de nombres sample_mflix.movies almacena todos los campos de los documentos de la colección.
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": true, } )