14

mongodb は、地理空間クエリ用に と の 2 つの同様の機能を提供しているよう$nearです$geoNear。モンゴのドキュメントによると

geoNear コマンドは、$near 演算子の代替手段を提供します。$near の機能に加えて、geoNear は追加の診断情報を返します。

geoNear機能のスーパーセットを提供しているようnearです。たとえばnear、最も近い 100 個のドキュメントのみを返すgeoNearようですが、最大値を指定できます。nearの代わりに使用する理由はありgeoNearますか? 一方は他方よりも効率的ですか?

4

4 に答える 4

20

効率はどちらも同じでなければなりません。

geoNearの主な制限は、一致したすべてのドキュメントが 1 つの結果ドキュメントで返されるため、コマンドとして結果セットを最大ドキュメント サイズまで返すことができることです。また、距離フィールドを各結果ドキュメントに追加する必要がありますが、これは使用法によって問題になる場合とそうでない場合があります。

$nearはクエリ演算子であるため、結果は 1 つのドキュメントよりも大きくなる可能性があります (結果は 1 つの応答で返されますが、1 つのドキュメントでは返されません)。クエリの limit() を介してドキュメントの最大数を設定することもできます。

コマンドから (たとえば、距離や位置の一致など)$nearを必要としない限り、ユーザーはそのまま使用することをお勧めします。diagnosticsgeonear

于 2013-03-21T02:48:18.187 に答える
2

主な違いは、$near はクエリ演算子です$geoNearが、集計ステージであることです。両方とも、指定されたポイントから最も近いものから最も遠いものの順にドキュメントを返します。

つまり、 $near は find() クエリまたは$match 集計段階で使用できますが、使用$geoNearできません。代わり$geoNearに、個別の集計ステージとしてのみ使用する必要があります。

各機能が提供するオプションも異なります。対応するドキュメント セクションの詳細を確認することをお勧めします。

$near ドキュメント
$geoNear ドキュメント

于 2019-07-30T08:39:58.677 に答える
1

GeoNear での 100 ドキュメントの制限はデフォルトの動作ですが、mongodb のドキュメント ( http://docs.mongodb.org/manual/reference/command/geoNear/ )で説明されているようにnumフィールドを設定することができます。

デフォルトは 100 に設定されていますが、さらに設定することもできます。残念ながら、現時点ではスキップパラメータがありません ( https://jira.mongodb.org/browse/SERVER-3925を参照) 。

于 2013-03-21T04:14:56.743 に答える