MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pipeline d'agrégation MongoDB $ geoNear (en utilisant l'option de requête et en utilisant l'opération de pipeline $ match) donnant un nombre différent de résultats

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