Menu Docs
Página inicial do Docs
/ /

Consultar, filtrar e recuperar arrays de objetos

Você pode usar a opção returnScope para definir o contexto da query e retornar arrays de objetos como documentos individuais.

Para recuperar objetos aninhados como documentos individuais usando returnScope, você deve:

  • Indexe as arrays de objetos como o tipoembeddedDocuments .

  • Defina storedSource para os campos aninhados que você deseja recuperar. A Pesquisa do MongoDB retorna apenas campos definidos storedSource no.

  • Configure a opção returnStoredSource para true na query.

returnScope tem a seguinte sintaxe em suas queries:

{
$search: {
"<operator>": {
<operator-specification>,
},
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
},
"returnStoredSource": true
}
}
{
$searchMeta: {
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
},
"returnStoredSource": true
},
"facet": {
"<operator>": {
<operator-specification>,
},
"facets": {
<facet-definition>
}
}
}

Para saber mais sobre sintaxe de query, consulte $search.

A opção returnScope define o contexto de recuperação para a query. Se você especificar returnScope em sua query, as pontuações do MongoDB Search, classificarão e contarão cada documento incorporado como se fosse um documento individual.

Na especificação do operador, você deve especificar o caminho completo para o campo que deseja fazer a query.

Quando você usa a opção returnScope, o MongoDB Search retorna apenas os campos que você configurou como storedSource dentro do embeddedDocument. Os campos fora do caminho embeddedDocument (como campos no nível raiz) e os campos que não são configurados como storedSource não são retornados.

Os exemplos seguintes demonstram como utilizar a opção returnScope em queries. Os exemplos utilizam o conjunto de dados de amostra sample_training.companies. Se você carregar os dados em seu cluster e criar o índice de amostra nos campos da coleção, poderá tentar as seguintes queries em relação aos dados de amostra.

1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "funding_rounds": {
6 "type": "embeddedDocuments",
7 "dynamic": true,
8 "fields": {
9 "investments": {
10 "type": "embeddedDocuments",
11 "dynamic": true
12 }
13 },
14 "storedSource": {
15 "include": [
16 "round_code",
17 "raised_currency_code",
18 "raised_amount",
19 "investments.person",
20 "investments.financial_org"
21 ]
22 },
23 }
24 }
25 }
26}

A definição de índice anterior configura a pesquisa do MongoDB para:

  • Indexe os campos funding_rounds e funding_rounds.investments como o tipo embeddedDocuments .

  • Indexe todos os campos indexáveis dinamicamente aninhados na array de objetos funding_rounds e funding_rounds.investments.

  • Armazene os seguintes campos em mongot:

    • funding_rounds.round_code

    • funding_rounds.raised_currency_code

    • funding_rounds.raised_amount

    • funding_rounds.investments.person

    • funding_rounds.investments.financial_org

Você pode usar o embeddedDocument operador para executar queries em termos de elementos nos funding_rounds funding_rounds.investments campos e. As seções seguintes demonstram algumas queries de amostra que utilizam a returnScope opção para recuperar os embeddedDocuments campos como documentos individuais.

Amostra de estrutura de documento da coleção sample_training.companies
{
...,
"funding_rounds": [
{
"id": <integer>,
"round_code": "<string>",
"source_url": "<string>",
"source_description": "<string>",
"raised_amount": <integer>,
"raised_currency_code": "<string>",
"funded_year": <integer>,
"funded_month": "<string>",
"funded_day": "<string>",
"investments": [
{
"company": "<string>",
"financial_org": {
"name": "<string>",
"permalink": "<string>"
},
"person": {
"first_name": "<string>",
"last_name": "<string>",
"permalink": "<string>"
}
},
...
]
},
...
],
...
}

As seções seguintes demonstram queries de exemplo que utilizam a opção returnScope para recuperar campos em embeddedDocuments digitam campos que foram armazenados em mongot.

Voltar

searchSequenceToken

Nesta página