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

MongoDBで値ベースのOrderByを実行するにはどうすればよいですか?

    $projectする必要があります MongoDB用語での各値の「重み」。これは、.aggregate()を意味します。 方法:

    db.users.aggregate([
        { "$project": {
            "status": 1,
            "a_field": 1,
            "another_field": 1,
            "pretty_much_every_field": 1,
            "weight": {
                "$cond": [
                    { "$eq": [ "$status", "A" ] },
                    10,
                    { "$cond": [ 
                        { "$eq": [ "$status", "B" ] },
                        8,
                        { "$cond": [
                            { "$eq": [ "$status", "C" ] },
                            6,
                            { "$cond": [
                                { "$eq": [ "$status", "D" ] },
                                4,
                                0
                            ]}
                        ]}
                    ]}
                ] 
            }
        }},
        { "$sort": { "weight": -1 } }
    ])
    

    三元$condのネストされた使用 「ステータス」の各項目を、指定された引数の順序で並べられた「重み」値と見なすことができます。

    これは順番に$sortに送られます 、ここで、予測値(「重み」)は、重み付きマッチングによってスコア付けされた結果を並べ替えるために使用されます。

    したがって、このようにして、ソートされた結果で最初に表示される「ステータス」一致の順序が優先されます。



    1. MongoDBとSpringBootを使用したファイルのアップロードと取得

    2. MongoDBにNOW()に相当するものはありますか

    3. MongoDBデータベースのコレクションを一覧表示する4つの方法

    4. 単一サーバー上の複数のLaravelアプリケーションのキューにRedisを使用する