2017-09-06 2 views
0

Ich habe folgendes Schema:Mongoose wirft badValue auf Koordinaten

module.exports = function (mongoose) { 
    var Location = mongoose.Schema({ 
     street: String, 
     number: String, 
     zip: String, 
     floor: String, 
     rental: String, 
     size: Number, 
     loc: { 
      type: {type: String}, 
      coordinates: [] 
     }, 
     updated: {type: Date, default: Date.now} 
    }); 

    return mongoose.model('Location', Location); 
}; 

Ich versuche, die Daten, die die folgende Art und Weise abfragen:

mongoose.models.Location.find({ 
    loc: { 
     $near: [55.69841959999999,12.5443359], 
     $maxDistance: 2000 
    } 
}, function (err, doc) { 
    res.json(doc); 
}); 

ich erhalte jedoch eine Fehlermeldung,:

> error processing query: ns=RentalDB.locationsTree: GEONEAR field=loc maxdist=2000 isNearSphere=0 
Sort: {} 
Proj: {} 
planner returned error: unable to find index for $geoNear query 

Kann mir jemand sagen, was ich falsch gemacht habe?

+0

, was genau der Fehler sagt. Es gibt keinen Index auf dem Feld. Sie müssen [einen "2Dsphere" -Index erstellen] (https://docs.mongodb.com/v3.0/tutorial/build-a-2dsphere-index/). Sie können einen Index über die Schemadefinition oder manuell hinzufügen. –

Antwort

0

Doumentation über geoNear

Returns Dokumente in der Reihenfolge der Nähe zu einem Punkt angegeben, von den am nächsten am weitesten. GeoNear benötigt einen Geodatenindex.

Sie müssen einen Geodatenindex erstellen.

+0

Ich habe versucht, dies in der Konsole zu tun, indem Sie: db.RentalDB.createIndex ({"Punkt": "2Dsphere"}) Allerdings hat das nicht geholfen –

+0

Ich denke, 'Punkt' muss der Name des Feldes, das halten die Koordinaten. In deinem Fall sehr ähnlich wie "locs" oder so. Schauen Sie [hier] (https://docs.mongodb.com/manual/core/geospatial-indexes/) für ein detailliertes Beispiel von 'creating geospacial index' –

+0

Ich habe auch versucht:> db.Location.createIndex ({" loc. Koordinaten ":" 2d "}) –

Verwandte Themen