Pocas suposiciones:-
1. Suponga que hay 300 registros que coinciden según la ubicación.
2. Suponga que el primer conjunto de 100 resultados no tiene la etiqueta pizza. Los 200 documentos restantes (101 a 300) tienen etiqueta pizza
Consulta 1:-
- Hay 2 operaciones de tubería $geoNear y $match
- La salida de la operación de canalización $geoNear es la entrada de la operación $matchpipeline
- $geoNear encuentra un máximo de 100 resultados (límite que hemos especificado) según la ubicación ordenada por la distancia más cercana a la lejana. (Tenga en cuenta que los 100 resultados devueltos se basan únicamente en la ubicación. Por lo tanto, estos 100 resultados no contienen ningún documento con la etiqueta "pizza")
- Estos 100 resultados se envían a la siguiente operación de tubería $match desde donde ocurre el filtrado. Pero como el primer conjunto de 100 resultados no tenía la etiqueta pizza, la salida está vacía
Consulta 2:-
- Solo hay 1 operación de canalización $geoNear
- Hay un campo de consulta incluido en la operación de tubería $geoNear $geoNear encuentra un máximo de 100 resultados (límite que hemos especificado) en función de la ubicación ordenada por la distancia más cercana a la lejana y la etiqueta de consulta =pizza
- Ahora aquí, los resultados del 101 al 200 se devuelven como salida, ya que la consulta se incluye dentro de la operación de canalización $geoNear. Entonces, en una oración simple, decimos, encuentre todos los documentos con la ubicación [x,y] withtag=pizza.
PD:- La etapa de canalización de $group se agrega solo para obtener el conteo y, por lo tanto, no se ha escrito al respecto en la explicación