As queries de pesquisa do Atlas são executadas dentro de uma fase do pipeline de agregação, que é o método preferido para realizar agregações.
Operações de agregação processam diversos documentos e geram resultados calculados. Você pode usar operações de agregação para:
Agrupar valores de diversos documentos.
Executar operações nos dados agrupados para gerar um único resultado.
Analisar alterações de dados ao longo do tempo.
Você pode usar a fase $search
ou a fase $searchMeta
como a primeira fase no pipeline de agregação.
Estágio do pipeline de agregação | Descrição |
---|---|
Realiza pesquisas de texto completo e retorna uma lista ordenada de documentos junto com metadados adicionais de pesquisa. Use | |
Realiza pesquisas de texto completo e retorna os metadados sem recuperar os documentos. Use |
Após a conclusão da fase $search
ou da fase $searchMeta
, você pode usar fases de agregação adicionais para processar ainda mais os documentos. Por exemplo, você pode usar um ou mais das seguintes fases, além de outras fases:
Estágio do pipeline de agregação | Descrição |
---|---|
Limita o número de documentos passados para o estágio seguinte no pipeline. | |
Ignora os documentos que passam para a fase e passa os documentos restantes para a próxima fase no pipeline. | |
Passa os documentos com os campos solicitados para a próxima fase do pipeline. | |
Adiciona novos campos aos documentos. | |
Processa vários pipelines de agregação em uma única fase no mesmo conjunto de documentos de entrada. | |
Filtra documentos com base em um predicado de query especificado e passa os documentos correspondentes para a próxima fase do pipeline. | |
Combina documentos com os mesmos campos ou expressões em um único documento usando uma chave de grupo. | |
Executa uma união externa esquerda em uma collection no mesmo banco de dados para filtrar documentos da collection "unida" para processamento. |
Ao adicionar essas fases ao seu pipeline de agregação, considere o impacto potencialmente significativo no desempenho.
Para melhorar o desempenho, recomendamos que você use $limit
para os resultados de pesquisa, pagine os resultados de pesquisa conforme necessário e recupere os resultados de pesquisa após um ponto de referência.