Poche ipotesi:-
1. Supponiamo che ci siano 300 record che corrispondono in base alla posizione.
2. Supponiamo che il primo set di 100 risultati non abbia tag pizza. I restanti 200 documenti (da 101 a 300) hanno il tag pizza
Query 1:-
- Ci sono 2 operazioni di pipeline $geoNear e $match
- L'output dell'operazione di $geoNear pipeline è l'input dell'operazione di $matchpipeline
- $geoNear trova un massimo di 100 risultati (limite che abbiamo specificato) in base alla posizione ordinata dalla distanza più vicina a quella lontana. (Nota qui che i 100 risultati restituiti sono puramente basati sulla posizione. Quindi questi 100 risultati non contengono alcun documento con tag "pizza")
- Questi 100 risultati vengono inviati alla successiva operazione di pipeline $match da dove avviene il filtraggio. Ma poiché il primo set di 100 risultati non aveva il tag pizza, l'output è vuoto
Query 2:-
- C'è solo 1 operazione di pipeline $geoNear
- C'è un campo di query incluso nell'operazione della pipeline $geoNear$geoNear trova un massimo di 100 risultati (limite che abbiamo specificato) in base alla posizione ordinata per distanza più vicina e lontana e querytag=pizza
- Ora qui i risultati da 101 a 200 vengono restituiti come output poiché la query è inclusa nell'operazione di pipeline $geoNear. Quindi frase semplice diciamo, trova tutti i documenti con posizione [x,y] withtag=pizza.
P.S:- La fase della pipeline $group è stata aggiunta solo per ottenere il conteggio e quindi non ne ho scritto nella spiegazione