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

Contar resultados de bĂşsqueda en MongoDB

La opción MongoDB Search count agrega un campo al documento de resultados de metadatos que muestra un conteo de los resultados de la búsqueda para la query. Puedes utilizar count para determinar el tamaño del conjunto de resultados. Puedes utilizarlo en la $search o en la $searchMeta. Debes usarse junto con los operadores o los recopiladores para mostrar el número total de documentos o el límite inferior de documentos que coinciden con la query.

MongoDB recommends using count with the $searchMeta stage to retrieve metadata results only for the query. To retrieve metadata results and query results using the $search stage, you must use the $$SEARCH_META variable. To learn more, see SEARCH_META Aggregation Variable.

Para utilizar la opciĂłn count sobre colecciones particionadas, tu clĂşster debe ejecutar MongoDB 7.0 o posterior. En clĂşsteres particionados que ejecutan MongoDB 7.2.0, $searchMeta podrĂ­a generar un error para count.

MongoDB Search no incluye los resultados count en los resultados de las consultas ejecutadas con count en moda explicaciĂłn.

count tiene la siguiente sintaxis:

{
"$searchMeta"|"$search": {
"index": "<index name>", // optional, defaults to "default"
"<operator>": {
<operator-specifications>
},
"count": {
"type": "lowerBound"|"total",
"threshold": <number-of-documents> //optional
}
}
}
Campo
Tipo
DescripciĂłn
ÂżRequerido?

type

string

Tipo de conteo de los documentos en el conjunto de resultados. El valor puede ser uno de los siguientes:

  • lowerBound - para un recuento lĂ­mite inferior del nĂşmero de documentos que cumplen con la query. Puede establecer el threshold para el nĂşmero lĂ­mite inferior.

  • total - para un recuento exacto de la cantidad de documentos que coinciden con la query. Si el conjunto de resultados es grande, MongoDB Search puede tardar más en devolver el recuento que lowerBound.

Si se omite, es por defecto lowerBound.

no

threshold

Int

NĂşmero de documentos a incluir en el recuento exacto si type es lowerBound. Si se omite, el valor por defecto es 1000, lo que indica que cualquier nĂşmero hasta 1000 es un recuento exacto y cualquier nĂşmero superior a 1000 es un recuento aproximado del nĂşmero de documentos en el resultado.

no

El documento de conteo incluido en el documento de resultados contiene los siguientes campos enteros:

OpciĂłn
DescripciĂłn

lowerBound

LĂ­mite inferior para este conjunto de resultados. Se devuelve de forma predeterminada si se omite la opciĂłn type y cuando se solicita explĂ­citamente un recuento de tipo lowerBound.

total

Recuento total para este conjunto de resultados. Esto se devuelve solo cuando se solicita un conteo de tipo total.

Cuando ejecutas tu consulta utilizando la etapa $search, MongoDB Search almacena los resultados de metadatos en la variable $$SEARCH_META y devuelve solo los resultados de bĂşsqueda. Puedes usar la variable $$SEARCH_META en todas las etapas del pipeline de agregaciĂłn admitidas para consultar los resultados de metadatos de su $search query.

MongoDB recomienda usar la variable $$SEARCH_META solo si necesitas tanto los resultados de la bĂşsqueda como los resultados de los metadatos. De lo contrario, utiliza la:

  • $search etapa solo para los resultados de bĂşsqueda.

  • $searchMeta etapa solo para los resultados de los metadatos.

Ejemplo

Suponga un Ă­ndice en el campo released de la colecciĂłn sample_mflix.movies:

{
"mappings": {
"dynamic": false,
"fields": {
"released": {
"type": "date"
}
}
}
}

La siguiente query busca pelĂ­culas que se estrenaron cerca del 1 de septiembre de 2011 en la colecciĂłn movies. La query solicita un recuento total de los resultados. La query incluye lo siguiente:

La query de muestra utiliza las siguientes etapas:

Busca pelĂ­culas estrenadas cerca de septiembre 01, 2011 en la colecciĂłn movies. La query solicita un recuento total de los resultados y metadatos sobre el campo genres.

Excluye todos los campos excepto title y released de los documentos e incluye los resultados de los metadatos almacenados en la variable $$SEARCH_META como el valor de un campo llamado meta.

Limita la salida a 2 documentos.

db.movies.aggregate([
{
"$search": {
"near": {
"path": "released",
"origin": ISODate("2011-09-01T00:00:00.000+00:00"),
"pivot": 7776000000
},
"count": {
"type": "total"
}
}
},
{
"$project": {
"meta": "$$SEARCH_META",
"title": 1,
"released": 1
}
},
{
"$limit": 2
}
])
{
"_id" : ObjectId("573a13c3f29313caabd6b025"),
"title" : "Submarino",
"released" : ISODate("2011-09-01T00:00:00Z"),
"meta" : {
"count" : { "total" : NumberLong(23026) }
}
}
{
"_id" : ObjectId("573a13c7f29313caabd748f7"),
"title" : "Devil's Playground",
"released" : ISODate("2011-09-01T00:00:00Z"),
"meta" : {
"count" : { "total" : NumberLong(23026) }
}
}

SupĂłn un Ă­ndice en los campos released y genres de la colecciĂłn sample_mflix.movies:

{
"mappings": {
"dynamic": false,
"fields": {
"genres": {
"type": "token"
},
"released": {
"type": "date"
}
}
}
}

La query de muestra utiliza las siguientes etapas:

Busca pelĂ­culas estrenadas cerca de septiembre 01, 2011 en la colecciĂłn movies. La query solicita un recuento total de los resultados y metadatos sobre el campo genres.

Limita la salida a 2 documentos.

Procesa los resultados de $search excluyendo todos los campos excepto title, released, y genres de los documentos e incluyendo los resultados de metadatos almacenados en la variable $$SEARCH_META dentro del arreglo meta de documentos.

db.movies.aggregate([
{
"$search": {
"facet": {
"operator": {
"near": {
"path": "released",
"origin": ISODate("2011-09-01T00:00:00.000+00:00"),
"pivot": 7776000000
}
},
"facets": {
"genresFacet": {
"type": "string",
"path": "genres"
}
}
},
"count": {
"type": "total"
}
}
},
{
"$limit": 2
},
{
"$facet": {
"results": [
{ "$project":
{
"title": 1,
"released": 1,
"genres": 1
}
}
],
"meta": [
{"$replaceWith": "$$SEARCH_META"},
{"$limit": 1}
]
}
}
])
[
{
results: [
{
_id: ObjectId('573a13c3f29313caabd6b025'),
genres: [ 'Drama' ],
title: 'Submarino',
released: ISODate('2011-09-01T00:00:00.000Z')
},
{
_id: ObjectId('573a13c7f29313caabd748f7'),
genres: [ 'Action', 'Horror' ],
title: "Devil's Playground",
released: ISODate('2011-09-01T00:00:00.000Z')
}
],
meta: [
{
count: { total: Long('20878') },
facet: {
genresFacet: {
buckets: [
{ _id: 'Drama', count: Long('12149') },
{ _id: 'Comedy', count: Long('6436') },
{ _id: 'Romance', count: Long('3274') },
{ _id: 'Crime', count: Long('2429') },
{ _id: 'Thriller', count: Long('2400') },
{ _id: 'Action', count: Long('2349') },
{ _id: 'Adventure', count: Long('1876') },
{ _id: 'Documentary', count: Long('1755') },
{ _id: 'Horror', count: Long('1432') },
{ _id: 'Biography', count: Long('1244') }
]
}
}
}
]
}
]

To learn more about the results, see Count Results.

El siguiente ejemplo utiliza un Ă­ndice en el campo year de la colecciĂłn sample_mflix.movies:

{
"mappings": {
"dynamic": false,
"fields": {
"year": {
"type": "number"
}
}
}
}

La siguiente query busca las películas entre los años 2010 y 2015 en la colección movies. La query solicita un recuento mínimo de los resultados:

db.movies.aggregate([
{
"$searchMeta": {
"range": {
"path": "year",
"gte": 2010,
"lte": 2015
},
"count": {
"type": "lowerBound"
}
}
}
])

MongoDB Search devuelve los siguientes resultados:

{ "count" : { "lowerBound" : NumberLong(1001) } }

La siguiente query busca las películas entre los años 2010 y 2015 en la colección movies. La query solicita un recuento total de los resultados:

db.movies.aggregate([
{
"$searchMeta": {
"range": {
"path": "year",
"gte": 2010,
"lte": 2015
},
"count": {
"type": "total"
}
}
}
])

MongoDB Search devuelve los siguientes resultados:

{ "count" : { "total" : NumberLong(5971) } }

To learn more about the results, see Count Results.