MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose near(...)-Abfrage auf indiziertem 2dsphere-Feld gibt keine gültigen Ergebnisse zurück

Scheint ein Moongoose-Bug zu sein .

Ändern der Abfrage zur Verwendung eines GeoJSON Objekt anstelle eines Koordinatenpaars , also:

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

führt zu folgender Abfrage:

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

Die Suche ist jetzt erfolgreich.

Die Dokumentation zeigt explizit eine Abfrage mit einem Koordinatenpaar:

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

Es sieht jedoch so aus, als würde dies nicht funktionieren, und das Beispiel sollte lauten:

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