Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
MongoDB Branding Shape
Click Here!
Docs Menu

hasRoot Operador

hasRoot

El operador hasRoot puede utilizarse para query campos de nivel raíz cuando se especifican las opciones returnScope y returnStoredSource.

hasRoot tiene la siguiente sintaxis:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "hasRoot": {
5 "operator": {
6 <operator-specification>
7 }
8 },
9 "returnScope": {
10 "path": "<embedded-documents-field-to-retrieve>"
11 },
12 "returnStoredSource": true,
13 }
14}
Campo
Tipo
Descripción
Necesidad

operator

Objeto

Operador para utilizar en la query de un campo indexado. Esto especifica los criterios de búsqueda para filtrar los documentos secundarios.

Requerido

Para utilizar este operador, debes realizar lo siguiente en la definición del índice:

  • Indexa el campo de nivel raíz que quieres query.

  • Indexa el arreglo de objetos que deseas recuperar con el tipo embeddedDocuments. También debe configurar storedSource para los campos anidados que desea recuperar.

En la query, debes hacer lo siguiente:

  • Especifique returnScope para definir o escopo do campo na búsqueda pelo operador.

  • Establece returnStoredSource en true para devolver los campos storedSource.

Los ejemplos en esta sección utilizan el namespace sample_training.companies. Si cargas el conjunto de datos de muestra y creas el índice en la colección, puedes probar las consultas de muestra que se muestran en esta sección.

Las consultas de esta sección utilizan el siguiente índice. Esta definición de índice configura MongoDB Search para que haga lo siguiente:

  • Indexe automáticamente todos los campos indexables dinámicos en la colección.

  • Índice los campos products, funding_rounds y funding_rounds.investments como el tipo embeddedDocuments.

  • Almacena los siguientes campos en mongot:

    • funding_rounds.raised_currency_code

    • funding_rounds.raised_amount

    • funding_rounds.investments

    • products.name

1{
2 "mappings": {
3 "dynamic": true,
4 "fields": {
5 "funding_rounds": {
6 "dynamic": true,
7 "fields": {
8 "investments": [
9 {
10 "dynamic": true,
11 "type": "embeddedDocuments"
12 }
13 ]
14 },
15 "storedSource": {
16 "include": [
17 "raised_currency_code",
18 "raised_amount",
19 "investments"
20 ]
21 },
22 "type": "embeddedDocuments"
23 },
24 "products": {
25 "dynamic": true,
26 "storedSource": {
27 "include": [
28 "name"
29 ]
30 },
31 "type": "embeddedDocuments"
32 }
33 }
34 }
35}

La siguiente consulta devuelve products donde el campo de nivel raíz founded_year se encuentra entre los años 2005 y 2010.

1db.companies.aggregate([
2 {
3 "$search": {
4 "returnStoredSource": true,
5 "returnScope": { "path": "products" },
6 "hasRoot": {
7 "operator": {
8 "range": {
9 "path": "founded_year",
10 "gte": 2005,
11 "lte": 2010
12 }
13 }
14 }
15 }
16 }
17])

La siguiente query busca en el campo name la empresa denominada Facebook utilizando el operador text para recuperar el monto invertido (funding_rounds.raised_amount y funding_rounds.raised_currency_code) por todos los inversores (investments.person y investments.financial_org) en la empresa.

1db.companies.aggregate([
2 {
3 "$search": {
4 "returnStoredSource": true,
5 "returnScope": { "path": "funding_rounds" },
6 "hasRoot": {
7 "operator": {
8 "text": {
9 "path": "name",
10 "query": "Facebook"
11 }
12 }
13 }
14 }
15 }
16])

La siguiente query busca en el campo anidado funding_rounds.investments organizaciones financieras con el término Ventures (en cualquier parte del campo name) que hayan invertido en empresas descritas con el término network (en cualquier parte del campo description). La query utiliza el operador compuesto para buscar en:

  • Campo anidado funding_rounds.investments.financial_org.name usando el operador embeddedDocument

  • Campo description de nivel raíz que utiliza el operador hasRoot

El returnScope establece el contexto para que los operadores pasen al campo de tipo funding_rounds embeddedDocuments, y el campo returnStoredSource se establece en true para devolver solo los campos storedSource. La query limita los resultados a 5 documentos.

1db.companies.aggregate([
2 {
3 "$search": {
4 "compound": {
5 "should": [
6 {
7 "embeddedDocument": {
8 "path": "funding_rounds.investments",
9 "operator": {
10 "wildcard": {
11 "path": "funding_rounds.investments.financial_org.name",
12 "query": "*Ventures*",
13 "allowAnalyzedField": true
14 }
15 }
16 }
17 },
18 {
19 "hasRoot": {
20 "operator": {
21 "wildcard": {
22 "path": "description",
23 "query": "*network*",
24 "allowAnalyzedField": true
25 }
26 }
27 }
28 }
29 ]
30 },
31 "returnScope": {"path": "funding_rounds"},
32 "returnStoredSource": true
33 }
34 },
35 {
36 "$limit": 5
37 }
38])