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

キードキュメントmongodb集計を変更する

    動的キーを使用してネストされたオブジェクトを作成するには、$を使用する必要があります。 arrayToObject キーの配列を取ります(k )およびvaluesv )パラメータとして。次に、 $replaceRoot を使用できます。 その新しいオブジェクトをルートレベルに昇格させます。 ObjectIdを変換するにはMongoDB4.0が必要です string $toString を使用する オペレーター

    db.col.aggregate([
        {
            $replaceRoot: {
                newRoot: {
                    $arrayToObject: {
                        $let: {
                            vars: { data: [ { k: { $toString: "$_id" }, v: "$serie" } ] },
                            in: "$$data"
                        }
                    }
                }
            }
        }
    ])
    

    出力:

    {
        "5b97f6cea37f8c96db70fea9" : {
                "_id" : ObjectId("5a55f988b6c9dd15b47faa2a"),
                "updatedAt" : ISODate("2018-02-09T13:22:54.521Z"),
                "createdAt" : ISODate("2018-01-10T11:31:20.978Z"),
                "deletar" : false,
                "infantil" : false,
                "status" : true,
                "turma" : [ ]
        }
    }
    

    _idを削除したい場合 結果では、vでフィールドを明示的に指定できます のように:

    v: { updatedAt: "$serie.updatedAt", createdAt: "$serie.createdAt", ... }
    


    1. AWSでのActionCable:WebSocketハンドシェイク中のエラー:予期しない応答コード:404

    2. ハード障害が発生した場合に、redisクラスター内の特定のノードのハッシュスロットを再開するにはどうすればよいですか?

    3. 配列のサブドキュメントにフィールドが存在するかどうかを確認します

    4. MongoDB $ setは、フィールドだけを書き込むのですか、それともドキュメント全体を書き込むのですか?