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.
Docs Menu

in Operador

El operador in en MongoDB Search realiza una búsqueda de un arreglo de valores de BSON number, date, boolean, objectId, uuid o string en la ruta especificada y devuelve documentos donde el valor del campo es igual a cualquier valor en el arreglo especificado. Si el campo contiene un arreglo, el operador in selecciona los documentos cuyo campo incluye un arreglo que contiene al menos un elemento que coincide con cualquier valor del arreglo especificado.

El operador in tiene la siguiente sintaxis:

{
$search: {
"index": <index name>, // optional, defaults to "default"
"in": {
"path": "<field-to-search>",
"score": <options>,
"value": <single-or-array-of-values-to-search>,
"doesNotAffect": "<facet-to-exclude>" | [<array-of-facets>]
}
}
}
Campo
Tipo
Descripción
Necesidad

path

string o arreglo de strings

Campo o campos indexados para buscar. También puedes especificar una ruta comodín para buscar.

Para buscar valores de string en un campo, debes indexar el campo como el MongoDB Search token type.

Requerido

score

Objeto

Puntuación que se asigna a los resultados coincidentes con los términos de búsqueda. Utiliza una de las siguientes opciones para modificar la puntuación:

  • boostMultiplica la puntuación resultante por el número dado.

  • constant: reemplazar la puntuación del resultado por el número dado.

  • functionse reemplaza la puntuación del resultado utilizando la expresión de función.

Opcional

value

Valor o valores a buscar. El valor puede ser un solo valor o un arreglo de valores, pero solo de uno de los tipos BSON soportados y no puede ser una mezcla de tipos diferentes.

Para buscar valores de string en un campo, debes indexar el campo como el MongoDB Search token type.

Requerido

doesNotAffect

string o arreglo de strings

Faceta o lista de facetas que se deben excluir del recálculo del recuento en función de esta query. El valor debe ser uno o más nombres de una faceta definida en $search.facets o $searchMeta.facets. El operador utiliza las facetas especificadas para filtrar documentos que coincidan con esta query, pero no recalcula las cuentas para ellas. Para obtener más información, consulta Facetas de selección múltiple.

Opcional

Los siguientes ejemplos utilizan el operador in para hacer queries a colecciones en la colección sample_analytics.customers. Si carga los datos de muestra en su clúster y crea un índice de búsqueda de MongoDB Search denominado default que utiliza asignaciones estáticas en la colección, puede ejecutar las siguientes query contra las colecciones.

La definición de índice de muestra especifica las siguientes acciones para soportar consultas de operadores in en los campos indexados de la colección:

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

  • Indexa estáticamente el campo name como el tipo token y convierte el texto del campo en minúsculas.

{
"mappings": {
"index": "default",
"dynamic": true,
"fields": {
"name": {
"normalizer": "lowercase",
"type": "token"
}
}
}
}

Para aprender a crear un índice de búsqueda de MongoDB, consulta Administrar índices de búsqueda de MongoDB.

La siguiente query utiliza el operador in para buscar en el campo birthdate, que contiene un único valor, para los clientes que nacieron en fechas determinadas. La query utiliza la etapa $project para:

  • Omitir el campo _id en los resultados.

  • Incluye solo los campos name y birthdate en los resultados.

1db.customers.aggregate([
2 {
3 "$search": {
4 "in": {
5 "path": "birthdate",
6 "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")]
7 }
8 }
9 },
10 {
11 "$project": {
12 "_id": 0,
13 "name": 1,
14 "birthdate": 1
15 }
16 }
17])
1[
2 {
3 name: 'Elizabeth Ray',
4 birthdate: ISODate("1977-03-02T02:20:31.000Z")
5 },
6 {
7 name: 'Brad Cardenas',
8 birthdate: ISODate("1977-05-06T21:57:35.000Z")
9 }
10]

MongoDB Search devuelve dos documentos que coinciden con las fechas especificadas en la query.

La siguiente query utiliza el operador in para buscar en el campo active, que contiene un valor booleano, para los clientes que están activos. La query devuelve el número de clientes activos cuya fecha de nacimiento se encuentra en los siguientes buckets:

  • 1970-01-01, límite inferior inclusivo para este bucket

  • 1980-01-01, límite superior exclusivo para el cubo de 1970-01-01 y límite inferior inclusivo para este cubo

  • 1990-01-01, límite superior exclusivo para el cubo de 1980-01-01 y límite inferior inclusivo para este cubo

  • 2000-01-01, límite superior exclusivo para el intervalo 1990-01-01

1db.customers.aggregate([
2 {
3 "$searchMeta": {
4 "facet": {
5 "operator": {
6 "in": {
7 "path": "active",
8 "value": null
9 }
10 },
11 "facets": {
12 "birthdateFacet": {
13 "type": "date",
14 "path": "birthdate",
15 "boundaries": [ISODate("1970-01-01"), ISODate("1980-01-01"), ISODate("1990-01-01"), ISODate("2000-01-01")],
16 "default": "other"
17 }
18 }
19 }
20 }
21 }
22])
[
{
count: { lowerBound: Long('1') },
facet: {
birthdateFacet: {
buckets: [
{
_id: ISODate('1970-01-01T00:00:00.000Z'),
count: Long('1')
},
{
_id: ISODate('1980-01-01T00:00:00.000Z'),
count: Long('0')
},
{
_id: ISODate('1990-01-01T00:00:00.000Z'),
count: Long('0')
}
]
}
}
}
]