sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $geoNear agregační kanál (pomocí možnosti dotazu a pomocí operace $match pipeline) poskytující různý počet výsledků

Málo předpokladů:-
1. Předpokládejme, že existuje 300 záznamů, které se shodují na základě umístění.
2. Předpokládejme, že první sada 100 výsledků nemá značku pizzy. Zbývajících 200 dokumentů (101 až 300) má tag pizza

Dotaz 1:-

  • Existují 2 potrubní operace $geoNear a $match
  • Výstup operace potrubí $geoNear je vstupem operace $matchpipeline
  • $geoNear najde maximálně 100 výsledků (limit, který jsme určili) na základě umístění seřazeného podle vzdálenosti od nejbližší po vzdálenou. (Všimněte si, že 100 vrácených výsledků je čistě založeno na umístění. Těchto 100 výsledků tedy neobsahuje žádný dokument s tagem "pizza")
  • Těchto 100 výsledků je odesláno do další operace kanálu $match, odkud dochází k filtrování. Ale protože první sada 100 výsledků neobsahovala značku pizza, je výstup prázdný

Dotaz 2:-

  • Existuje pouze 1 potrubní operace $geoNear
  • V operaci potrubí $geoNear je zahrnuto pole dotazu$geoNear najde maximálně 100 výsledků (limit, který jsme určili) na základě umístění seřazeného podle vzdálenosti od nejbližší po vzdálenou a podle querytag=pizza
  • Nyní jsou výsledky od 101 do 200 vráceny jako výstup, protože dotaz je zahrnut do operace kanálu $geoNear. Řekneme tedy jednoduchou větu, najděte všechny dokumenty s umístěním [x,y] withtag=pizza.

P.S:- $group pipeline fáze je přidána pouze pro získání počtu, a proto jsme o ní nepsali ve vysvětlení



  1. Jak vytvořit partnerský vztah mezi MongoDB Atlas a Google App Engine Standard Environment Node App

  2. Výjimka používající mongodb jako úložiště mezipaměti infinispan

  3. Meteor:nahrávání souboru z klienta do kolekce Mongo vs souborový systém vs GridFS

  4. Najděte přesně odpovídající pole nebo všechny hodnoty pole v MongoDb