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在顶层有一个,但随后您将部分嵌套在其中,听起来更合乎逻辑的是,应该只有一个部分。

该文件将更容易更新。

于 2012-12-16T11:30:54.410 回答