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