Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

Contagem de resultados do Atlas Search

Nesta página

  • Sintaxe
  • Opções
  • Contagem de resultados
  • SEARCH_META Variável de agregação
  • Exemplos

A opção count do Atlas Search adiciona um campo ao documentode resultados de metadados do que exibe uma contagem dos resultados da pesquisa para a query. Você pode utilizar o count para determinar o tamanho do conjunto de resultados. Você pode usá-lo no estágio $search ou $searchMeta . Você deve usá-lo em conjunto com os operators ou coletores para exibir o número total de documentos ou um limite inferior do número de documentos que correspondem à query.

Observação

Para usar a opção count sobre collections fragmentadas, seu cluster deve executar MongoDB v6.0 ou superior. Em Atlas clusters fragmentados que executam o MongoDB v7.2.0, $searchMeta pode retornar um erro para count.

O MongoDB recomenda usar count com o estágio $searchMeta para recuperar resultados de metadados somente para a query. Para recuperar resultados de metadados e queries usando o estágio $search, use a variável $$SEARCH_META. Para saber mais, consulte SEARCH_META Variável de agregação.

Observação

O Atlas Search não inclui os resultados count nos resultados das queries executadas com count no modo explicativo.

count tem a seguinte sintaxe:

{
"$searchMeta"|"$search": {
"index": "<index name>", // optional, defaults to "default"
"<operator>": {
<operator-specifications>
},
"count": {
"type": "lowerBound"|"total",
"threshold": <number-of-documents> //optional
}
}
}
Campo
Tipo
Descrição
Obrigatório?
type
string

Tipo de contagem dos documentos no conjunto de resultados. O valor pode ser um dos seguintes:

  • lowerBound - para uma contagem de limite inferior do número de documentos que correspondem à query. Você pode definir threshold para o número do limite inferior.

  • total - para uma contagem exata do número de documentos que correspondem à query. Se o conjunto de resultados for grande, o Atlas Search poderá levar mais tempo do que para lowerBound retornar a contagem.

Se omitido, o padrão é lowerBound.

não
threshold
int
Número de documentos a incluir na contagem exata se type for lowerBound. Se omitido, o padrão é 1000, o que indica que qualquer número até 1000 é uma contagem exata e qualquer número acima de 1000 é uma contagem aproximada do número de documentos no resultado.
não

O documento de contagem incluído no documento de resultados contém os seguintes campos inteiros:

Opção
Descrição
lowerBound
Limite inferior para este conjunto de resultados. Isso será retornado por padrão se você omitir a opção type e quando solicitar explicitamente uma contagem do tipo lowerBound.
total
Contagem total para este conjunto de resultados. Isso é retornado somente quando uma contagem do tipo total for solicitada.

Quando você executa sua query utilizando o estágio $search, o Atlas Search armazena os resultados de metadados na variável $$SEARCH_META e retorna somente os resultados da pesquisa. É possível usar a variável $$SEARCH_META em todas as fases do pipeline de agregação compatíveis para visualizar os resultados de metadados da sua query $search.

O MongoDB recomenda utilizar a variável $$SEARCH_META somente se você precisar dos resultados da pesquisa e dos resultados de metadados. Caso contrário, use o:

  • $search estágio apenas para os resultados da pesquisa.

  • $searchMeta estágio apenas para os resultados dos metadados.

Exemplo

Suponha um índice no campo released na coleção sample_mflix.movies:

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

A query a seguir procurar filmes lançados perto de 01 de setembro de 2011 na collection movies. A query solicita uma contagem total dos resultados. A query inclui um:

  • estágio $project para excluir todos os campos, exceto title e released, dos documentos e incluir os resultados de metadados armazenados na variável $$SEARCH_META como o valor de um campo chamado meta.

  • estágio $limit para limitar a saída 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
}
])

O Atlas Search retorna os seguintes resultados para a query:

{
"_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) }
}
}

Para saber mais sobre os resultados, consulte Contagem de resultados.

O exemplo a seguir utiliza um índice no campo year na coleção sample_mflix.movies:

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

A query a seguir procura os filmes entre os anos de 2010 e 2015 na coleção movies. A query solicita uma contagem de limite inferior dos resultados:

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

O Atlas Search retorna os seguintes resultados:

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

A query seguinte pesquisar os filmes entre os anos de 2010 e 2015 na collection movies. A query solicita uma contagem total dos resultados:

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

O Atlas Search retorna os seguintes resultados:

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

Para saber mais sobre os resultados, consulte Contagem de resultados.

Voltar

3. Destacar termos de pesquisa

Próximo

5. Paginar resultados