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

最新の最も近い投稿を検索します。制限は20です。

    最終的には、2つの個別のランキングディメンションを持つ投稿のリストが作成されると思います。つまり、次のようになります。

    { age: 86400, distance: 1000 }
    { age: 172800, distance: 5000 }
    { age: 57600, distance: 20000 }
    { age: 288000, distance: 8000 }
    

    単位が何であるかは実際には関係ありません。秒とメートルとしましょう。両方を並べ替えランクに影響を与えたい場合は、次のような最も単純なもので、ランク付けアルゴリズムを使用することになります。

    rank = (C1 * age) + (C2 * distance)
    

    ここで、C 1 およびC2 は、重みを調整するために微調整できる定数です。値は、使用している単位と、各ディメンションに割り当てるランキングの影響の大きさによって異なります。

    もう1つのオプションは、最初に時間の集計で並べ替え、次に距離で並べ替えることです。したがって、今日からのすべての投稿は距離で並べ替えられます。続いて、昨日の距離順などです。またはその逆で、距離範囲で並べ替えてから年齢で並べ替えます。つまり、すべて(0〜1000m)以内で年齢順に並べ替えます。続いて(1001〜2000m)以内など。




    1. MongoDBでサブドキュメントを並べ替える

    2. 子ドキュメントのスコアに基づいてmongoコレクションを並べ替える

    3. Mongoosastic-{[エラー:生きている接続がありません]メッセージ:'生きている接続がありません'}

    4. LINQラムダ式で文字列変数を使用する