7

現在の実装では、標準の MongoDB B ツリーの上に地理的ハッシュ コードをエンコードします。$near クエリの結果は正確です。このエンコーディングの制限の 1 つは高速ですが、特にビット フリップ領域の周辺では、プレフィックス ルックアップが正確な結果を返さないことです。MongoDB は、最初のプレフィックス スキャンの後にグリッド近傍検索を実行して、ストラグラー ポイントをピックアップすることでこれを解決します。これにより、通常、正しい結果を提供しながら、パフォーマンスが非常に高く維持されます。

それはmongodbが地球をいくつかのグリッドに分割するということですか?

4

1 に答える 1

8

Greg Studer (10gen) によるこのプレゼンテーションでは、地理空間インデックスについて詳しく説明しています: Geospatial Indexing with MongoDB

MongoDB 2.2 での標準的な地理空間の実装では、2 次元のGeoHashアプローチを使用して、可変ビットの精度を使用します。

By default, precision is set to 26 bits which is equivalent to approximately
2 feet given (longitude, latitude) location values and default (-180, 180)
bounds.

GeoHash アプローチには、いくつかのポイントが空間的に近いかもしれないが異なるハッシュを持つエッジケースがあります。MongoDB には、地理空間ヘイスタック インデックスも含まれています。これは、1 つの追加のインデックス付き基準 (たとえば、「foo」という名前の 25 マイル以内にあるすべてのレストランを検索する) を使用して、小地域の「近い」長さ/緯度の検索用に特別に調整されています。

Nicholas Knize (Thermopylae) による別の興味深いプレゼンテーションは、現在の B-tree / GeoHash アプローチとR-treesを対比しています。スライド 8 にスキップすると、役立つ視覚的な説明があります: MongoDB を使用した RTree Spatial Indexing - MongoDC

于 2012-09-19T12:41:56.140 に答える