私は、mongodbに保存されているジオコード(〜5000万の場所)を含むnodejsアプリを作成しています(mongoネイティブドライバーを使用)。開発のために、サンプル データ (世界の空港 ~45k の場所http://www.ourairports.com/data/airports.csv ) を使用してテストしています。私は GeoJSON 形式に従い、場所フィールド (「ジオメトリ」という名前) に 2dsphere インデックスを構築しています。次に、場所を見つけるために $geowithin クエリを実行しています。
すべてが期待どおりに機能します。問題は、US を含むポリゴンをクエリしているときに、クエリが 22845 の場所を返すのに約 4 ~ 6 秒かかることです。
db. airports.ensureIndex({ geometry: '2dsphere' })
db.airports.find({ geometry: { '$geoWithin': { '$geometry': { type: 'Polygon', coordinates: [ [ [ -127.32917843921399, 75.11297289119061 ], [ -71.32126356078601, 75.11297289119061 ], [ -71.32126356078601, 12.305525108809391 ], [ -127.32917843921399, 12.305525108809391 ], [ -127.32917843921399, 75.11297289119061 ] ] ] } } } })
これは正しくないと確信しています。このように、5000 万ポイントの応答時間を想像することはできません。誰かがこれのパフォーマンスを改善する方向に私を向けることができれば幸いです。