A opção storedSource em um índice de pesquisa do MongoDB pesquisa especifica os campos no documento de origem que o MongoDB pesquisa 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 de Pesquisa do MongoDB na Pesquisa do MongoDB.
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 usa um valor booleano ou um objeto na definição do í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. Isso não é aceito se a definição do índice contiver um campo do tipo vetor. Em vez disso, use |
| 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 com os nomes de campo ou caminhos separados por ponto para os campos a serem excluídos de serem armazenados. Se especificado, o MongoDB Search armazena documentos originais, exceto os campos listados aqui. Se a definição do índice contiver um campo do tipo vetor, você deverá excluir o campo do tipo |
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, } )