sql >> Database >  >> NoSQL >> MongoDB

$geoNear (geaggregeerde pijplijn) retourneert niet de juiste documenten

Het is helemaal niet dezelfde vraag. Er is een duidelijk verschil in het gebruik van een aparte $match stadium, aangezien het "filteren" pas wordt gedaan "nadat" de "dichtstbijzijnde resultaten" zijn gevonden. Dit betekent dat u mogelijk "minder" resultaten retourneert, aangezien de criteria niet in combinatie worden uitgegeven.

Daarom is er een "query" optie in $geoNear :

db.place.aggregate(
[
    { 
        $geoNear: { 
            spherical: true,
            near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
            distanceField: "dist",
            query: {
                "schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" } 
            }
        }
    }
])

Dat is nu dezelfde vraag. Of het zou precies hetzelfde zijn als je $nearSphere . Sinds $near houdt geen rekening met de kromming van de aarde in afstandsberekeningen. $nearSphere en $geoNear doet.

Maar het belangrijkste punt is combineren met de "query" optie, want dat is de enige manier waarop u echt beide criteria in overweging krijgt bij de eerste zoekopdracht.




  1. MongoDB vs. Redis vs. Cassandra voor een snelle, tijdelijke opslagoplossing voor rijen

  2. 4 manieren om een ​​document bij te werken in MongoDB

  3. Krijg een lijst met alle unieke tags in mongodb

  4. Mongodb wordt afgesloten