sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB $geoNear aggregeringspipeline (använder frågealternativ och använder $match pipeline operation) ger olika antal resultat

Få antaganden:-
1. Anta att det finns 300 poster som matchar baserat på platsen.
2. Anta att den första uppsättningen av 100 resultat inte har tagpizza. Resten 200 dokument (101 till 300) har tagpizza

Fråga 1:-

  • Det finns två pipelineoperationer $geoNear och $match
  • Utdata från $geoNear pipeline operation är indata till $matchpipeline operation
  • $geoNear hittar max 100 resultat (gräns vi har angett) baserat på platsen sorterad efter närmaste till långt avstånd. (Observera här att de 100 resultaten som returneras enbart är baserade på platsen. Så dessa 100 resultat innehåller inget dokument med taggen "pizza")
  • Dessa 100 resultat skickas till nästa pipeline operation $match varifrån filtreringen sker. Men eftersom den första uppsättningen med 100 resultat inte hade taggpizza är utgången tom

Fråga 2:-

  • Det finns bara en pipelineoperation $geoNear
  • Det finns ett frågefält inkluderat i $geoNear pipeline operation$geoNear hittar max 100 resultat (gränsen vi har angett) baserat på platsen sorterad efter närmaste till långt avstånd och querytag=pizza
  • Nu här returneras resultaten från 101 till 200 som utdata eftersom frågan ingår i pipelineoperationen $geoNear. Så enkel mening säger vi, hitta alla dokument med plats [x,y] withtag=pizza.

P.S :- $group pipeline-steget läggs till bara för att få räkningen och har därför inte skrivit om det i förklaringen



  1. Gruppera efter datum med lokal tidszon i MongoDB

  2. Hur räknar man förekomster i kapslade dokument i mongodb?

  3. När ska man använda Redis istället för MySQL för PHP-applikationer?

  4. MongoDB sorterar på barn