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.
Considerations
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.
Sintaxis
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 } } }
opciones
Campo | Tipo | DescripciĂłn | ÂżRequerido? |
|---|---|---|---|
| string | Tipo de conteo de los documentos en el conjunto de resultados. El valor puede ser uno de los siguientes:
Si se omite, es por defecto | no |
| Int | NĂşmero de documentos a incluir en el recuento exacto si | no |
Recuento de resultados
El documento de conteo incluido en el documento de resultados contiene los siguientes campos enteros:
OpciĂłn | DescripciĂłn |
|---|---|
| LĂmite inferior para este conjunto de resultados. Se devuelve de forma predeterminada si se omite la opciĂłn |
| Recuento total para este conjunto de resultados. Esto se devuelve solo cuando se solicita un conteo de tipo |
SEARCH_META Variable de agregaciĂłn
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:
$searchetapa solo para los resultados de bĂşsqueda.$searchMetaetapa 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 | |
Excluye todos los campos excepto | |
Limita la salida a |
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 | |
Limita la salida a | |
Procesa los resultados de |
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.
Ejemplos
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.