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

アイテムを値mongodbで並べ替える

    これは、一般的な概念として「重み付け」と呼ばれます。したがって、他のメカニズムがない場合は、MongoDBクエリで、「重み」の値をドキュメントに論理的に「投影」することで、これを論理的に処理します。

    ドキュメントに存在するフィールドを「投影」して変更する方法は、 .aggregate() メソッド、具体的には $project> パイプラインステージ:

    db.collection.aggregate([
        { "$project": {
            "getthisfirst": 1,
            "weight": {
                "$cond": [
                    { "$eq": [ "$getthisfirst", "yes" ] },
                    10,
                    { "$cond": [
                        { "$eq": [ "$getthisfirst", "maybe" ] },
                        5,
                        0
                    ]}
                ]
            }
        }},
        { "$sort": { "weight": -1 } }
    ]);
    

    $cond ここでの演算子は、"ternary" です。 (if / then / else)最初の引数がブール値のtrue|falseに到達する条件付きステートメントである条件 。 trueの場合 結果として2番目の引数が返されます。それ以外の場合は、応答として「else」または3番目の引数が返されます。

    この「ネストされた」場合、「はい」が一致の場合、特定の「重み」スコアが割り当てられます。それ以外の場合は、次の条件テストに進み、「たぶん」が一致の場合、アノッタースコアが割り当てられます。それ以外の場合、スコアは0です。 一致する可能性は3つしかないためです。

    次に、 $sort 条件は、結果を「重み」が一番上になるように「順序付け」(降順)するために適用されます。




    1. 致命的なエラー:キャッチされない例外「RedisException」とメッセージ「Redisサーバーが消えました」

    2. Mongodbシャーディングキーの検索が非常に遅い

    3. 複数の変数を持つrender_template

    4. JavaScriptにIntelliJIDEAを使用するための最適なプラグインとプロジェクト?