MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pipeline de agregação MongoDB $ geoNear (usando a opção de consulta e usando a operação de pipeline $ match) fornecendo resultados diferentes


Poucas suposições:-
1. Suponha que haja 300 registros que correspondem com base no local.
2. Suponha que o primeiro conjunto de 100 resultados não tenha pizza de tag. Os restantes 200 documentos (101 a 300) têm etiqueta pizza

Consulta 1:-
  • Existem duas operações de pipeline $geoNear e $match
  • A saída da operação de pipeline $geoNear é a entrada da operação $matchpipeline
  • $geoNear encontra um máximo de 100 resultados (limite que especificamos) com base na localização classificada da distância mais próxima para a distância. (Observe aqui que os 100 resultados retornados são puramente baseados no local. Portanto, esses 100 resultados não contêm nenhum documento com a tag "pizza")
  • Esses 100 resultados são enviados para a próxima operação de pipeline $match de onde a filtragem acontece. Mas como o primeiro conjunto de 100 resultados não tinha a tag pizza, a saída está vazia

Consulta 2:-
  • Há apenas 1 operação de pipeline $geoNear
  • Há um campo de consulta incluído na operação de pipeline $geoNear$geoNear encontra no máximo 100 resultados (limite que especificamos) com base no local classificado por distância mais próxima e distante e na querytag=pizza
  • Agora, os resultados de 101 a 200 são retornados como saída, pois a consulta é incluída na operação de pipeline $geoNear. Então, em uma frase simples, dizemos, encontre todos os documentos com localização [x,y] withtag=pizza.

P.S :- O estágio de pipeline $ group é adicionado apenas para obter a contagem e, portanto, não foi escrito sobre isso na explicação