sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $geoNear aggregeringspipeline (ved at bruge forespørgselsindstillingen og bruge $match pipeline operation) giver forskellige antal resultater

Få antagelser:-
1. Antag, at der er 300 poster, der matcher baseret på placeringen.
2. Antag, at det første sæt af 100 resultater ikke har tagpizza. De resterende 200 dokumenter (101 til 300) har tagpizza

Forespørgsel 1:-

  • Der er 2 pipeline-operationer $geoNear og $match
  • Outputtet fra $geoNear pipeline operation er input til $matchpipeline operation
  • $geoNear finder maks. 100 resultater (grænse vi har angivet) baseret på placeringen sorteret efter nærmeste til langt afstand. (Bemærk her, at de returnerede 100 resultater udelukkende er baseret på placeringen. Så disse 100 resultater indeholder ikke noget dokument med tagget "pizza")
  • Disse 100 resultater sendes til den næste pipeline operation $match, hvorfra filtreringen finder sted. Men da det første sæt af 100 resultater ikke havde tagpizza, er outputtet tomt

Forespørgsel 2:-

  • Der er kun 1 pipeline-operation $geoNear
  • Der er et forespørgselsfelt inkluderet i $geoNear pipeline operationen$geoNear finder maks. 100 resultater (grænse vi har angivet) baseret på placeringen sorteret efter nærmeste til fjern afstand og querytag=pizza
  • Nu her returneres resultaterne fra 101 til 200 som output, da forespørgslen er inkluderet i pipeline-operationen $geoNear. Så simpel sætning siger vi, find alle dokumenter med placering [x,y] withtag=pizza.

PS:- $group pipeline-stadiet tilføjes kun for at få optællingen og har derfor ikke skrevet om det i forklaringen



  1. Opbygning af en maskinlæringsapplikation med Cloudera Data Science Workbench og operationel database, del 1:Opsætning og grundlæggende

  2. Spring data mongodb fjerner en egenskab fra et dokument ved hjælp af MongoTemplate

  3. [Fejl:kunne ikke oprette forbindelse til [localhost:27017]] fra NodeJS til mongodb

  4. FÅ information fra bruger i databasen