Docs Menu
Docs Home
/ /

Consultar, filtrar y recuperar matrices de objetos

Puedes utilizar el returnScope Opción para establecer el contexto de la consulta y devolver matrices de objetos como documentos individuales.

Para recuperar objetos anidados como documentos individuales utilizando returnScope, debe:

  • Indexar las matrices de objetos como tipoembeddedDocuments.

  • Defina "storedSource" para los campos anidados que desea recuperar. MongoDB Search solo devuelve los campos definidos storedSource en.

  • Establezca la opción returnStoredSource en true en la consulta.

returnScope tiene la siguiente sintaxis en tus consultas:

{
$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 obtener más información sobre la sintaxis de consulta,$search consulte.

La opción returnScope establece el contexto de obtención para la query. Si especifica returnScope en su consulta, MongoDB Search otorga puntuación, ordena y cuenta cada documento incrustado como si se tratase de un documento individual.

Al usar la opción returnScope, MongoDB Search solo devuelve los campos configurados como storedSource dentro de embeddedDocument. Los campos fuera de la ruta embeddedDocument (como los campos en el nivel raíz) y los que no están configurados como storedSource no se devuelven.

En la especificación del operador, debe especificar la ruta completa al campo que desea consultar. Al usar la opción returnScope, asegúrese de que todas las rutas de las especificaciones del operador estén anidadas bajo returnScope.path. Para consultar un campo fuera de returnScope.path, debe usar el operador hasAncestor o hasRoot. Para obtener más información, consulte:

Los siguientes ejemplos muestran cómo usar la opción returnScope en las consultas. Los ejemplos utilizan el conjunto de datos de ejemplo sample_training.companies. Si carga los datos en su clúster y crea el índice de ejemplo en los campos de la colección, puede probar las siguientes consultas con los datos de ejemplo.

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}

La definición de índice anterior configura MongoDB Search para:

  • Indexe los campos funding_rounds y funding_rounds.investments como el tipo embeddedDocuments.

  • Indexa todos los campos indexables dinámicamente anidados en la matriz de objetos funding_rounds y funding_rounds.investments.

  • Almacene los siguientes campos en mongot:

    • funding_rounds.round_code

    • funding_rounds.raised_currency_code

    • funding_rounds.raised_amount

    • funding_rounds.investments.person

    • funding_rounds.investments.financial_org

Puede usar el embeddedDocument operador para realizar consultas elemento por elemento funding_rounds en funding_rounds.investments los campos y. Las siguientes secciones muestran algunos ejemplos de consultas que usan la returnScope opción para recuperar los embeddedDocuments campos como documentos individuales.

Estructura de documento de muestra de la colección 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>"
}
},
...
]
},
...
],
...
}

Las siguientes secciones demuestran consultas de muestra que utilizan la opción returnScope para recuperar campos en campos de tipo embeddedDocuments que se almacenaron en mongot.

Volver

searchSequenceToken

En esta página