Quelques hypothèses :-
1. Supposons qu'il existe 300 enregistrements qui correspondent en fonction de l'emplacement.
2. Supposons que le premier ensemble de 100 résultats n'ait pas de tag pizza. Les 200 autres documents (101 à 300) ont la balise pizza
Requête 1 :-
- Il existe 2 opérations de pipeline $geoNear et $match
- La sortie de l'opération de pipeline $geoNear est l'entrée de l'opération $matchpipeline
- $geoNear trouve un maximum de 100 résultats (limite que nous avons spécifiée) en fonction de l'emplacement trié par la distance la plus proche à la plus éloignée. (Notez ici que les 100 résultats affichés sont purement basés sur la localisation. Ces 100 résultats ne contiennent donc aucun document avec la balise "pizza")
- Ces 100 résultats sont envoyés à la prochaine opération de pipeline $match à partir de laquelle le filtrage a lieu. Mais comme le premier ensemble de 100 résultats n'avait pas de tag pizza, la sortie est vide
Requête 2 :-
- Il n'y a qu'une seule opération de pipeline $geoNear
- Il y a un champ de requête inclus dans l'opération de pipeline $geoNear$geoNear trouve un maximum de 100 résultats (limite que nous avons spécifiée) en fonction de l'emplacement trié par la distance la plus proche à la plus éloignée et le querytag=pizza
- Maintenant, ici, les résultats de 101 à 200 sont renvoyés en sortie car la requête est incluse dans l'opération de pipeline $geoNear. Donc, dans une phrase simple, nous disons, trouvez tous les documents avec l'emplacement [x,y] withtag=pizza.
P.S :- L'étape de pipeline $group est ajoutée uniquement pour obtenir le décompte et n'a donc pas été écrite à ce sujet dans l'explication