MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

$geoNear (pipeline agregado) não retornando documentos corretos


Não é a "mesma" consulta. Há uma diferença distinta em usar um $match etapa, uma vez que a "filtragem" só é feita "depois" de serem encontrados os "resultados mais próximos". Isso significa que você potencialmente retornará resultados "menos", pois os critérios não são emitidos em combinação.

É por isso que existe uma "consulta" opção em $geoNear :
db.place.aggregate(
[
    { 
        $geoNear: { 
            spherical: true,
            near: { type: "Point", coordinates: [ 18.416145, -33.911973 ] },
            distanceField: "dist",
            query: {
                "schedule.key": { "$eq": "vo4lRN_Az0uwOkgBzOERyw" } 
            }
        }
    }
])

Agora essa é a mesma consulta. Ou seria exatamente o mesmo se você usasse $nearSphere . Desde $near não leva em conta a curvatura da Terra em cálculos de distância. $nearSphere e $geoNear faz.

Mas o ponto principal é combinar com a "query" opção, já que essa é a única maneira de realmente considerar os dois critérios na pesquisa inicial.