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

配列の長さで並べ替え

    $size MongoDB 2.6以降の演算子:

    db.collection.aggregate([
        // Project with an array length
        { "$project": {
            "title": 1,
            "author": 1,
            "votes": 1,
            "length": { "$size": "$votes" }
        }},
    
        // Sort on the "length"
        { "$sort": { "length": -1 } },
    
        // Project if you really want
        { "$project": {
            "title": 1,
            "author": 1,
            "votes": 1,
        }}
    ])
    

    十分に単純です。

    利用可能なバージョン2.6がない場合でも、もう少し作業を行うことでこれを行うことができます:

    db.collection.aggregate([
        // unwind the array
        { "$unwind": "$votes" },
    
        // Group back
        { "$group": {
            "_id": "$id",
            "title": { "$first": "$title" },
            "author": { "$first": "$author" },
            "votes": { "$push": "$votes" },
            "length": { "$sum": 1 }
        }},
    
        // Sort again
        { "$sort": { "length": -1 } },
    
        // Project if you want to
        { "$project": {
            "title": 1,
            "author": 1,
            "votes": 1,
        }}
    ])
    

    ほぼそれだけです。



    1. npmパッケージを使用してデータベースから動的画像パスを含むPDFを生成およびダウンロードする方法

    2. OpenShiftでディスククォータを超えました

    3. 公式のc#ドライバーを使用してMongoDBのUpdate.Setを使用して、複数のフィールドをどのように更新しますか?

    4. MongoDBで可能なクエリ