A storedSource opção em uma definição de índice do MongoDB Search especifica os campos no documento de origem que o MongoDB Search deve armazenar. Você pode configurar o storedSource para melhorar o desempenho da query em determinados casos de uso, pois reduz a necessidade de pesquisa implícita de tempo de query no banco de dados de backend. Você pode armazenar campos de todos os tipos de campo do MongoDB Search no MongoDB Search.
O MongoDB Search não indexa campos armazenados, então você deve indexar os campos separadamente para executar queries neles. Você também pode recuperar campos armazenados no momento da query usando a opção returnStoredSource.
Observação
storedSource está disponível apenas em clusters que executam o MongoDB 7.0+.
Para saber mais sobre como recuperar os campos armazenados, consulte Retornar campos de origem armazenados.
Sintaxe
A opção storedSource tem a seguinte sintaxe em uma definição de índice:
1 { 2 "storedSource": true | false | { 3 "include" | "exclude": [ 4 "<field-name>", 5 ... 6 ] 7 } 8 }
Opções
A opção storedSource obtém umvalor booleano ou um objeto na definição de índice.
Valores booleanos
Valor | Descrição |
|---|---|
| Especifica que a MongoDB Search deve armazenar todos os campos nos documentos. Armazenar documentos completos pode impacto significativamente o desempenho durante a indexação e a query. Para saber mais, consulte Armazenar campos de origem. Isto não é suportado se a definição de índice contiver campo de tipo de vetor. Em vez disso, utilize |
| Especifica que o MongoDB Search não deve armazenar o documento de origem original. Este é o valor padrão para a opção |
Objeto
O objeto de opção storedSource deve conter um dos seguintes campos:
Campo | Tipo | Descrição |
|---|---|---|
| array de strings | Lista que contém os nomes dos campo ou caminhos separados por pontos para campos a serem armazenados. Além dos campos especificados, o MongoDB Search armazena |
| array de strings | Lista que contém os nomes dos campo ou caminhos separados por pontos para os campos a serem excluídos do armazenamento. Se especificado, o MongoDB Search armazena documentos originais, exceto os campos listados aqui. Se a definição de índice contiver um campo do vetor de tipo, você deverá excluir o |
Exemplos
Os exemplos de índice seguintes utilizam os campos na coleção sample_mflix.movies para demonstrar como configurar os campos para armazenar no MongoDB Search utilizando a opção storedSource. Você pode usar mongosh, o Atlas UI Visual Editor ou o Atlas UI JSON Editor para configurar os índices.
➤ Use o menu suspenso Selecione seu idioma para definir a interface para o procedimento nesta página.
O exemplo seguinte armazena somente os campos title e awards.wins nos documentos na collection. Após selecionar seu método de configuração preferido, selecione a collection movies sob o reconhecimento de data center sample_mflix.
Clique em Refine Your Index para configurar seu índice.
Na seção Stored Source Fields, clique em Specified.
Selecione
awards.winsno menu suspenso na coluna Field Name e clique em Add.Clique em Add Field para especificar outro campo para armazenar.
Selecione
titleno menu suspenso na coluna Field Name e clique em Add.Clique em Save Changes.
Acrescente as linhas 5 a 10 do exemplo a seguir à definição do índice para armazenar os campos especificados na MongoDB Search. O exemplo utiliza a notação de ponto para especificar campos aninhados.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": { 6 "include": [ 7 "title", 8 "awards.wins" 9 ] 10 } 11 }
O exemplo a seguir armazena todos os campos exceto directors e imdb.rating nos documentos na coleção. Após selecionar seu método de configuração preferido, selecione a movies coleção sample_mflix .
Clique em Refine Your Index para configurar seu índice.
Na seção Stored Source Fields, clique em All Except Specified.
Selecione
directorsno menu suspenso na coluna Field Name e clique em Add.Clique em Add Field para especificar outro campo a ser excluído.
Selecione
imdb.ratingno menu suspenso na coluna Field Name e clique em Add.Clique em Save Changes.
Anexe as linhas 5 a 10 do exemplo a seguir à definição do índice para excluir os campos especificados. O exemplo utiliza a notação de ponto para especificar campos aninhados.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": { 6 "exclude": [ 7 "directors", 8 "imdb.rating" 9 ] 10 } 11 }
O exemplo a seguir armazena todos os campos nos documentos da collection. Após selecionar seu método de configuração preferido, selecione a coleção movies no banco de dados sample_mflix .
Clique em Refine Your Index para configurar seu índice.
Na seção Stored Source Fields, clique em All.
Clique em Save Changes.
Anexe a linha 5 do exemplo a seguir à definição do índice para armazenar todos os campos.
1 { 2 "mappings": { 3 "dynamic": true, 4 }, 5 "storedSource": true, 6 }
O exemplo a seguir para o namespace sample_mflix.movies armazena somente os campos title e awards.wins nos documentos em mongot:
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": { "include": [ "title", "awards.wins" ] } } )
O exemplo a seguir para o namespace sample_mflix.movies armazena todos os campos, exceto directors e imdb.rating nos documentos.
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": { "exclude": [ "directors", "imdb.rating" ] } } )
O exemplo a seguir para o namespace sample_mflix.movies armazena todos os campos nos documentos na coleção.
db.movies.createSearchIndex( "default", "definition": { "mappings": { "dynamic": true, }, "storedSource": true, } )