sql >> Database >  >> NoSQL >> MongoDB

MongoDB $geoNear-aggregatiepijplijn (met behulp van de query-optie en met behulp van $match-pijplijnbewerking) met verschillende resultaten

Enkele aannames:-
1. Stel dat er 300 records zijn die overeenkomen op basis van de locatie.
2. Stel dat de eerste set van 100 resultaten geen tag pizza heeft. De overige 200 documenten (101 tot 300) hebben de tag pizza

Vraag 1:-

  • Er zijn 2 pijplijnoperaties $geoNear en $match
  • De uitvoer van $geoNear-pijplijnbewerking is de invoer voor $matchpipeline-bewerking
  • $geoNear vindt maximaal 100 resultaten (limiet die we hebben opgegeven) op basis van de locatie gesorteerd op dichtstbijzijnde tot verre afstand. (Houd er rekening mee dat de 100 resultaten die zijn opgehaald puur gebaseerd zijn op de locatie. Deze 100 resultaten bevatten dus geen enkel document met de tag "pizza")
  • Deze 100 resultaten worden verzonden naar de volgende pijplijnbewerking $match van waaruit de filtering plaatsvindt. Maar aangezien de eerste set van 100 resultaten geen tag pizza had, is de uitvoer leeg

Vraag 2:-

  • Er is slechts 1 pijplijnoperatie $geoNear
  • Er is een zoekveld opgenomen in de $geoNear-pijplijnbewerking $geoNear vindt maximaal 100 resultaten (limiet die we hebben gespecificeerd) op basis van de locatie gesorteerd op dichtstbijzijnde tot verre afstand en de querytag=pizza
  • Hier worden nu de resultaten van 101 tot 200 geretourneerd als uitvoer, aangezien de query is opgenomen in de pijplijnbewerking $geoNear. Dus een simpele zin die we zeggen, vind alle documenten met locatie [x,y] withtag=pizza.

PS:- De $group-pijplijnfase is alleen toegevoegd om de telling te krijgen en heeft er daarom niet over geschreven in de uitleg



  1. Het hernoemen van een veld in een ingesloten document in een array in MongoDB werkt niet

  2. MongoDB oplog wijzigen en opnieuw afspelen

  3. Meerdere limietcondities in mongodb

  4. Stuur:de toegang is geweigerd om het eigendom op te lossen omdat het geen eigen eigendom is van de ouder