2017-09-06 15 views
0

上のエラーBadValueをスローI次のスキーマがあります。マングースは、座標

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

は、しかし、私はというエラーを取得:

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); 
}; 

iがデータを照会するには、以下の方法をしようとしています

> 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 

誰かが間違ったことを教えてもらえますか?

+0

エラーが言うまさに。フィールドにはインデックスはありません。 [2dsphereのインデックスを作成する]必要があります(https://docs.mongodb.com/v3.0/tutorial/build-a-2dsphere-index/)。スキーマ定義を使用して索引を追加することも、手動で索引を追加することもできます。 –

答えて

0

Doumentation最も遠いに最も近い から指定された点に近いのために、約geoNear

文書を戻します。 geoNearには地理空間インデックスが必要です。

ジオスペースインデックスを作成する必要があります。

+0

私はコンソールでこれを行うことを試みました:db.RentalDB.createIndex({"point": "2dsphere"}) しかし、それは役に立たなかった –

+0

私は 'point'は保持するフィールドの名前でなければならないと思います座標。あなたの場合、 'locs'や何かのように。 'geospacial index'を作成するための具体的な例は、[here](https://docs.mongodb.com/manual/core/geospatial-indexes/)をご覧ください。 –

+0

私も試しました:> db.Location.createIndex({" loc。 –