Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

geoSearch

項目一覧

  • 互換性
  • 動作
geoSearch

重要

MongoDB 5.0 で削除

MongoDB 5.0では、非推奨のgeoHaystackインデックスとgeoSearchコマンドが排除されます。 代わりに、 またはサポートされている$geoNear 地理空間クエリ演算子 のいずれかを使用した2 d インデックス を使用してください。

MongoDB インスタンスを 5.0 にアップグレードし、featureCompatibilityVersion5.0 に設定すると、既存の geoHaystack インデックスがすべて削除されます。

geoSearchコマンドは、MongoDB の haystack インデックス機能へのインターフェースを提供します。 これらのインデックスは、他のクエリ(つまり、haystack)に基づいて結果を収集した後、ロケーション座標に基づいて結果を返すのに役立ちます。

geoSearchコマンドは、次のフィールドを含むドキュメントを受け入れます。

フィールド
タイプ
説明

geoSearch

string

クエリするコレクション。

search

ドキュメント

ドキュメントをフィルタリングするクエリ。

near

配列

点の座標。

maxDistance

数値

任意。 指定した点からの最大距離。

limit

数値

任意。 返されるドキュメントの最大数。

readConcern

ドキュメント

任意。読み取り保証 (read concern) を指定します。

readConcern オプションの構文は、次のとおりです。readConcern: { level: <value> }

次の読み取り保証レベルが利用できます。

  • "local"。これは、プライマリとセカンダリに対する読み取り操作での、デフォルトの読み取り保証レベルです。

  • "available" 。プライマリおよびセカンダリに対する読み取り操作に使用できます。"available" は、プライマリおよびシャーディングされていないセカンダリに対して "local" と同じように動作します。クエリは、インスタンスの最新データを返します。

  • "majority"WiredTiger ストレージ エンジンを使用するレプリカセットで使用できます。

  • "linearizable"primary の読み取り操作にのみ使用できます。

読み取り保証 (read concern) のレベルについて詳しくは、「読み取り保証 (read concern) レベル」を参照してください。

読み取り保証 (read concern) レベルの詳細については、「読み取り保証 (read concern) レベル 」を参照してください。

comment

any

任意。このコマンドに添付するユーザー指定のコメント。設定すると、このコメントは以下の場所にこのコマンドの記録と合わせて表示されます。

コメントには、有効な BSON 型(string, integer, object, array など)を使用できます。

このコマンドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドはサーバーレスインスタンスではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

特に指定されていない限り、 geoSearchコマンドの結果は50ドキュメントに制限されます。

geoSearch は、シャーディングされたクラスターではサポートされていません。

geoSearch分散トランザクション内で使用できます。

重要

ほとんどの場合、分散トランザクションでは 1 つのドキュメントの書き込み (write) よりもパフォーマンス コストが高くなります。分散トランザクションの可用性は、効果的なスキーマ設計の代わりにはなりません。多くのシナリオにおいて、非正規化されたデータモデル(埋め込みドキュメントと配列)が引き続きデータやユースケースに最適です。つまり、多くのシナリオにおいて、データを適切にモデリングすることで、分散トランザクションの必要性を最小限に抑えることができます。

トランザクションの使用に関するその他の考慮事項(ランタイム制限や oplog サイズ制限など)については、「本番環境での考慮事項」も参照してください。

次の例で考えてみます。

db.runCommand({
geoSearch : "places",
near: [ -73.9667, 40.78 ],
maxDistance : 6,
search : { type : "restaurant" },
limit : 30
})

上記のコマンドでは、コレクションplaces内の座標[ -73.9667, 40.78 ]から最大 6 単位の距離を持つrestauranttypeが最大 30 件の結果まで返されます。

デフォルトの読み取り保証 (read concern) レベル "local" を無効にするには、readConcern オプションを使用します。

レプリカセットに対する次の操作では、大多数のノードに書き込まれたことが確認されたデータの最新のコピーを読み取るために、"majority"読み取り保証を指定します。

注意

読み取り保証のレベルを問わず、ノード上の最新データにシステム内のデータの最新バージョンが反映されていない場合があります。

db.runCommand(
{
geoSearch: "places",
near: [ -73.9667, 40.78 ],
search : { type : "restaurant" },
readConcern: { level: "majority" }
}
)

単一のスレッドでそれ自体の書き込みの読み取りを可能にするには、レプリカセットのプライマリに対して "majority" 読み取り保証と "majority" 書込み保証を使用します。

戻る

地理空間

項目一覧