Arrays 重命名MongoDB中数组中嵌入文档中的字段不起作用

Arrays 重命名MongoDB中数组中嵌入文档中的字段不起作用,arrays,mongodb,field,rename,Arrays,Mongodb,Field,Rename,第一步 > db.myCollection.find(); { "_id" : ObjectId("2358523892345"), "field1" : "value 1", "field2" : [ { "subfield1" : "value 2" }, { "Subfield2" : "value 3" } ], "field3" : "value 4" } 我想将字段子字段2重命名为子字段2。我试过: 第二步 > db.myCollection.update ( { "f

第一步

> db.myCollection.find();
{ "_id" : ObjectId("2358523892345"), "field1" : "value 1", "field2" : [ { "subfield1" : "value 2" }, { "Subfield2" : "value 3" } ], "field3" : "value 4" }
我想将字段
子字段2
重命名为
子字段2
。我试过:

第二步

> db.myCollection.update ( { "field3": "value 4" }, {$rename: {"Subfield2": "subfield2" } } )
然后再次运行find(),得到与“第一步”相同的结果,即该字段未重命名

使用MongoDB术语,我想我要做的是“重命名数组中嵌入文档中的字段”

参考资料


如果您想手动更新,我建议您安装rockmongo,rockmongo是一个处理mongo数据库的好工具,只需在服务器上提取它并连接到数据库即可。 在那里,您将发现非常容易更新mongo数据库、表和记录


似乎无法从命令行重命名数组中的字段,如此问题所述:

如文档中所述,无法重命名字段 在数组中。您唯一的选择是对集合进行迭代 文档,读取它们并使用$unset old/$set new更新每个文档 行动

但是,根据用户Liad Livnat的建议,可以通过RockMongo更改这些值

对于我的特定实例,我还删除了数组,并将结构更改为:

{
  "field1": "value 1",
  "field2": {"subfield1": "value 2", "subfield2": "value 3"},
  "field3": "value 4"
}
然后可以通过以下方式查询此对象:

db.myCollection.find( {"field2.subfield2":"value 3"} );
可能重复的