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

Consulta mangusto near(...) no campo indexado do 2dsphere não retornando resultados válidos


Parece que isso é um bug do moongoose .

Alterando a consulta para usar um GeoJSON objeto em vez de um par de coordenadas , assim sendo:
qry.where('loc').near({
    center: {
        type: 'Point',
        coordinates: search.loc
    },
    maxDistance: search.distance * 1000
});

resulta na seguinte consulta:
Mongoose: models.find({ loc: { '$near': { 
        '$maxDistance': 1,
        '$geometry': { type: 'Point', coordinates: [ 10, -20 ] } } } 
    }) { fields: undefined }  

A pesquisa agora é bem-sucedida.

Os documentos mostram explicitamente uma consulta usando um par de coordenadas:
query.where('loc').near({ center: [10, 10], maxDistance: 5 });

No entanto, parece que isso não funciona, e o exemplo deve ser:
query.where('loc').near({ center: { coordinates: [10, 10], type: 'Point' }, maxDistance: 5 });