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

配列内の配列オブジェクトを更新するMongoDB

    $[]を使用できます position-all ネストされた配列要素を更新するには、 $ []

    クエリ

    db.t14.update(
       {},
       { $set: { "calc.$[].datasets.$[elem].name": "updated" } },
       { arrayFilters: [  { "elem": "x1" } ], multi: true}
    )
    

    ドキュメント付きのサンプルコレクション

    > db.t14.findOne()
    {
            "_id" : 1,
            "calc" : [
                    {
                            "preset" : "abc",
                            "datasets" : [
                                    {
                                            "_id" : "x1",
                                            "name" : "n1"
                                    },
                                    {
                                            "_id" : "x2",
                                            "name" : "n2"
                                    }
                            ]
                    }
            ]
    }
    

    更新

    > db.t14.update({},{$set: { "calc.$[].datasets.$[elem].name": "newname" } },{ arrayFilters: [{ "elem.name": "n1" }], multi: true})
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    

    更新後

    > db.t14.findOne()
    {
            "_id" : 1,
            "calc" : [
                    {
                            "preset" : "abc",
                            "datasets" : [
                                    {
                                            "_id" : "x1",
                                            "name" : "newname"
                                    },
                                    {
                                            "_id" : "x2",
                                            "name" : "n2"
                                    }
                            ]
                    }
            ]
    }
    >
    



    1. Node.jsとMongooseの管理パネル

    2. MongoDB:1つのフィールドのすべてのドキュメントを更新します

    3. MongoDBのフィールドレベルの権限を実装するにはどうすればよいですか?

    4. ClusterControlとそのコンポーネントのパフォーマンスを最適化する方法