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

MongoDB:既存のフィールドで並べ替えてからアルファベット順に並べ替える

    どうですか:

    db.users.find({ "name": { "$exists": true } }).sort({'name': 1})
    

    結局のところ、並べ替えたいフィールドが実際に存在しない場合、戻り値はnullになります。 そのため、肯定的な結果よりも順序が「低く」なります。したがって、実際に一致する値を持つものだけを探している場合は、これらの結果を除外するのが理にかなっています。

    本当にすべての結果がそこにあり、nullに関係なく必要な場合 コンテンツの場合は、.aggregate()を使用して「重み付け」することをお勧めします :

    db.users.aggregate([
         { "$project": {
             "name": 1,
             "score": {
                 "$cond": [
                     { "$ifNull": [ "$name", false ] },
                     1,
                     10
                 ]
             }
         }},
         { "$sort": { "score": 1, "name": 1 } }
    ])
    

    そして、それはすべてのnullを動かします そのように値を割り当てることにより、結果は「チェーンの終わり」になります。



    1. サーバーがクラッシュした後、MongoDBが起動しない

    2. $lookup後の集約フィルター

    3. mongodbに接続する場合、connectは機能ではありません

    4. $ unwindの前に、サブドキュメントが空でないかどうかを確認してください