0

データ:

{
    "_id" : ObjectId("50cda9741d41c81da6000002"),
    "template_name" : "common_MH",
    "role" : "MH",
    "options" : [
        {
            "sections" : [
                {
                    "tpl_option_name" : "test321",
                    "tpl_option_type" : "string",
                    "tpl_default_value" : "test321"
                }
            ],
            "tpl_section_name" : "Test"
        }
    ]
}

options.$.section.$.tpl_option_name = 'test321' の tpl_default_value を変更できますか? すでに何度も試していますが、解決できません。私を助けてください、ありがとう。

4

1 に答える 1

0

これは、これらの種類の更新を行うには不適切なスキーマです。複数レベルの位置演算子用の JIRA がありますが、まだ完了していません: https://jira.mongodb.org/browse/SERVER-831

理想的には、このクライアント側を更新してから、配列のそのセクションをアトミックに設定する必要があります。

$section = {
    "tpl_option_name" : "test321",
    "tpl_option_type" : "string",
    "tpl_default_value" : "test321"    
};

db.col.update({}, {$set: {options.$.sections.1: $section}})

または、スキーマを変更する必要があります。セクションは本当に埋め込む必要がありますか? tpl_section_name最上位にがあることに気付きましたが、その中にセクションをネストしています。セクションを 1 つだけにする方が論理的に聞こえます。

そのドキュメントの方が更新が簡単です。

于 2012-12-16T11:30:54.410 に答える