私はmongoDB
を使用してポリゴンのコレクションを保存し、$geoIntersects
クエリを使用して、特定のポイントがどのポリゴンであるかを調べます。MongoDBキャッシュのメモリ内のコレクション?
var LocationShema = mongoose.Schema({
name: String,
geo: {
type: {
type: String
},
coordinates: []
}
});
LocationShema.index({geo: '2dsphere'});
module.exports = mongoose.model('Location', LocationShema);
ので、各要素は多角形である:
私mongoose
Schema
は、このようになります。私は2dsphere
インデックスを追加して、クエリが高速になり、コレクション全体がメモリに格納されることを期待しました。残念なことに、〜20queriesのために約600ms
が必要です。
私のクエリは次のようになります。
Location.find({
geo: {
$geoIntersects: {
$geometry: {
type: 'Point',
coordinates: [pos.lng, pos.lat]
}
}
}
},...)
がありますとにかく、私はより速く、この実行を行うことができますか? MongoDBにデータベース内のコレクション全体を強制的にキャッシュさせることができます(コレクションは決して変更されないので)。可能な方法はありますかコレクションが実際にインメモリキャッシュに格納されているかどうかを確認します?
また、地理空間検索を高速にするために使用できる代替手段はありますか(ライブラリなど)?
クエリの 'explain()'を投稿できますか? – KRONWALLED
mongoシェルでクエリを実行すると 'db.collectionName.find(query).explain()' – profesor79
が使用されますが、mongooseを使用していますが、シェルを使用していません。 – Cristy