このメーリング リストへの投稿で、Eliot はカーソルを使用しないと述べている$near
ため、その結果は 4MB または 100 ドキュメントのどちらか先に到達した方に制限されます。現在のドキュメントでは同じことが述べられていますが、これは 2D インデックスにのみ当てはまります (ドキュメントはDOCS-1841によって修正される必要があります)。
GeoJSONにポイントを保存し、2dsphere インデックス(バージョン 2.4 の新機能)を使用している場合、$near
クエリはカーソルを使用し、100 ドキュメントの厳密な上限を設定しないでください。
最初に 2d インデックスを使用して、次の例を検討してください。
> var point = [0,0];
> for(i=0;i<200;i++) db.foo.insert({x: point});
> db.foo.ensureIndex({x: "2d"});
> db.foo.find({x: {$near: point}}).count(true);
100
> db.foo.find({x: {$near: point}}).limit(200).count(true);
100
次に、同等のポイント データを持つ 2dsphere インデックスを使用します。
> var point = {type: "Point", coordinates: [0,0]};
> for(i=0;i<200;i++) db.bar.insert({x: point});
> db.bar.ensureIndex({x: "2dsphere"})
> db.bar.find({x: {$near: point}}).count(true)
200
> db.bar.find({x: {$near: point}}).limit(150).count(true)
150