sql >> データベース >  >> NoSQL >> MongoDB

MongoDB GeoNearの結果を距離以外で並べ替えますか?

    $nearを使用している場合 コマンドを実行する場合は、最初に距離で並べ替える必要があります。そうしないと、「近く」の概念は実際には意味がありません。地球上では、すべてが特定のポイントに「近い」可能性があります。これは「どれだけ近い」かという問題にすぎません。

    ここには2つのオプションがあります:

    1. $nearの結果を制限する
    2. $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の値です。 通常、コマンドはドロップし始めます。クライアントコードは、最大の結果に達しているかどうかを確認したい場合があります。



    1. 配列フィールドでサブドキュメントを並べ替える方法は?

    2. xargs変数でsedを使用すると、シェル拡張内で機能しません

    3. MongoConnectionException-候補サーバーが見つかりません

    4. md5ハッシュをMongoDBに効率的に保存するためのベストプラクティス