Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Consultar, filtrar y recuperar matrices de objetos

Puedes utilizar el returnScope opción para establecer el contexto de la query y devolver arreglos de objetos como documentos individuales.

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

  • Indexe los arreglos de objetos como los tipoembeddedDocuments.

  • Define storedSource para los campos anidados que desees recuperar. MongoDB Search sólo devuelve los campos definidos en el storedSource.

  • Configure la opción returnStoredSource en true en la query.

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 query, consulta $search.

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.

Cuando utilizas la opción returnScope, MongoDB Search solo devuelve los campos que configuraste como storedSource dentro del embeddedDocument. No se devuelven los campos fuera de la ruta embeddedDocument (por ejemplo, los campos a nivel de raíz) y los campos que no están configurados como storedSource.

En tu especificación de operador, debes especificar la ruta completa al campo que deseas query. Al usar la opción returnScope, debes asegurarte de que todas las rutas de especificaciones del operador estén anidadas debajo del returnScope.path. Para query sobre un campo fuera del returnScope.path, debe usar el operador hasAncestor o hasRoot. Para obtener más información, consulte:

Los siguientes ejemplos demuestran cómo utilizar la opción returnScope en las consultas. Los ejemplos utilizan el conjunto de datos de muestra sample_training.companies. Si cargas los datos en tu clúster y creas el índice de muestra en los campos de la colección, puedes probar las siguientes consultas con los datos de muestra.

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 que:

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

  • Indiza todos los campos indexables de forma dinámica anidados en el arreglo de objetos funding_rounds y funding_rounds.investments.

  • Almacena 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