MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

La requête Mongoose near(...) sur le champ indexé 2dsphere ne renvoie pas de résultats valides

Il semble que ce soit un bug moongoose .

Modification de la requête pour utiliser un GeoJSON objet au lieu d'une paire de coordonnées , en tant que tel :

qry.where('loc').near({
    center: {
        type: 'Point',
        coordinates: search.loc
    },
    maxDistance: search.distance * 1000
});

résultats dans la requête suivante :

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

La recherche réussit maintenant.

La documentation montre explicitement une requête utilisant une paire de coordonnées :

query.where('loc').near({ center: [10, 10], maxDistance: 5 });

Cependant, il semble que cela ne fonctionne pas, et l'exemple devrait être :

query.where('loc').near({ center: { coordinates: [10, 10], type: 'Point' }, maxDistance: 5 });