MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

$geoNear (conduttura aggregata) non restituisce i documenti corretti

Non è affatto la "stessa" query. Esiste una netta differenza nell'utilizzo di un $match fase, poiché il "filtraggio" viene eseguito solo "dopo" che sono stati trovati i "risultati più vicini". Ciò significa che potresti restituire risultati "meno" poiché i criteri non vengono emessi in combinazione.

Ecco perché c'è una "query" opzione in $geoNear :

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

Ora è la stessa domanda. Oppure sarebbe esattamente lo stesso se usassi $nearSphere . Poiché $near non tiene conto della curvatura della terra nei calcoli della distanza. $nearSphere e $geoNear fa.

Ma il punto principale è la combinazione con "query" opzione, poiché questo è l'unico modo per ottenere veramente entrambi i criteri considerati nella ricerca iniziale.