sql >> Databasteknik >  >> NoSQL >> MongoDB

$geoNear (aggregerad pipeline) returnerar inte korrekta dokument

Det är inte alls samma fråga. Det finns en tydlig skillnad i att använda en separat $match steg, eftersom "filtreringen" endast görs "efter" de "närmaste resuts" har hittats. Detta innebär att du potentiellt returnerar "färre" resultat eftersom kriterierna inte utfärdas i kombination.

Det är därför det finns en "fråga" alternativ i $geoNear :

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

Nu är det samma fråga. Eller det skulle vara exakt samma sak om du använde $nearSphere . Sedan $nära tar inte hänsyn till jordens krökning i avståndsberäkningar. $nearSphere och $geoNear gör.

Men huvudpoängen är att kombinera med "fråga" alternativet, eftersom det är det enda sättet du verkligen får båda kriterierna beaktade i den första sökningen.




  1. Problem med @Qualifier

  2. MongoDB $toLower

  3. Spring Redis Error Handle

  4. MongoDb aggregering $lookup med utländska _ids i arrayer