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

サブドキュメントに基づいてmongodbクエリ結果を並べ替える方法

    cursor.sort()を使用できます 複数のフィールド(基本的にはコンボ)を同時に並べ替えるが、ドキュメントとサブドキュメントの両方のフィールドを同時に並べ替える場合は機能しないと思います。トップドキュメントの2つの異なるフィールドで並べ替える場合または、サブドキュメントの2つの異なるフィールドで、それで問題ないと思います。

    したがって、集計 を使用して同様の出力を取得できます。 フレームワーク。あなたがしなければならないのは基本的にsubsの配列を分解することです フィールドに移動してから、 sort 彼ら。

    次のようなことができます:

    db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
    

    上記のコードを使用すると、次のような出力が得られるはずです。

     { 
        id: 1, 
        type: 'strs', 
        subs: 
            { time: 1, val: 'ab' }
    },{ 
        id: 1, 
        type: 'strs', 
        subs: 
            { time: 20, val: 'cs' }
    },{ 
        id: 1, 
        type: 'strs', 
        subs: 
            { time: 50, val: 'be' }
    },{ 
        id: 2, 
        type: 'newname', 
        subs: 
            { time: 12, val: 'a' }
    },{ 
        id: 2, 
        type: 'newname', 
        subs: 
            { time: 20, val: 'b' }
    },{ 
        id: 2, 
        type: 'newname', 
        subs: 
            { time: 30, val: 'c' }
    }
    


    1. Spring Data MongoDBがこのネストされた型の構造をインスタンス化できないのはなぜですか?

    2. PyMongo/Mongoengineはmongodumpに相当します

    3. 配列に埋め込まれたドキュメントを返すMongodbselectフィールド

    4. Django-Mongodbリストフィールドを持つNonrel