La storedSource opción en una búsqueda de MongoDB La definición de índice especifica los campos del documento de origen que MongoDB Search debe almacenar. Puede configurar storedSource para mejorar el rendimiento de las queries en ciertos casos de uso, ya que reduce la necesidad de una búsqueda implícita en la base de datos de backend durante el tiempo de query. 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 debes indexar los campos por separado para poder ejecutar consultas sobre ellos. También puedes recuperar los campos almacenados en tiempo de query utilizando la opción returnStoredSource.
Nota
storedSource solo está disponible en clústeres que ejecutan MongoDB 7.0+.
Para aprender más sobre cómo recuperar los campos almacenados, consulta Devolver campos fuente 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 un 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 puede afectar significativamente el rendimiento durante la indexación y la consulta. Para obtener más información, consulta Almacenando campos de origen. No está soportado si la definición del índice contiene un campo de tipo vector. En su lugar, utiliza |
| 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 |
|---|---|---|
| Arreglo de cadenas | Lista que contiene los nombres de los campos o rutas separadas por puntos de los campos que se van a almacenar. Además de los campos especificados, MongoDB Search almacena |
| Arreglo 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.
➤ Utiliza el menú desplegable Selecciona tu lenguaje para configurar la interfaz del procedimiento en esta página.
El siguiente ejemplo almacena solo los campos title y awards.wins en los documentos de la colección. Después de seleccionar tu método de configuración preferido, selecciona 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.winsen el menú desplegable de la columna Field Name y haga clic en Add.Haz clic en Add Field para especificar otro campo donde almacenar.
Seleccione
titleen el menú desplegable de 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 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 bajo 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
directorsen el menú desplegable de la columna Field Name y haga clic en Add.Haga clic en Add Field para especificar otro campo para excluir.
Seleccione
imdb.ratingen el menú desplegable de 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 en la colección. Después de seleccionar el método de configuración preferido, selecciona 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 de índice para almacenar todos los campos.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": true, 6 }
El siguiente ejemplo para el namespace sample_mflix.movies almacena sólo los campos title y awards.wins en los documentos de mongot:
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": { "include": [ "title", "awards.wins" ] } } )
El siguiente ejemplo para el namespace 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 namespace sample_mflix.movies almacena todos los campos en los documentos de la colección.
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": true, } )