$near
を使用している場合 コマンドを実行する場合は、最初に距離で並べ替える必要があります。そうしないと、「近く」の概念は実際には意味がありません。地球上では、すべてが特定のポイントに「近い」可能性があります。これは「どれだけ近い」かという問題にすぎません。
ここには2つのオプションがあります:
-
$near
の結果を制限する -
$within
を使用する コマンド
あなたが探しているのは$within
だと思います コマンド
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
次に、これらを他のキーで並べ替えることができます:
db.places.find(...).sort({created:1})
ただし、withinコマンドでは結果が多すぎる可能性があるため、$within
によって返されるアイテムの数を制限するロジックを配置することをお勧めします。 。
db.places.find(...).limit(50).sort({created:1})
真実は、特定の制限に達した場合、$within
の値です。 通常、コマンドはドロップし始めます。クライアントコードは、最大の結果に達しているかどうかを確認したい場合があります。