第一步
> db.myCollection.find();
{ "_id" : ObjectId("2358523892345"), "field1" : "value 1", "field2" : [ { "subfield1" : "value 2" }, { "Subfield2" : "value 3" } ], "field3" : "value 4" }我想将字段Subfield2重命名为subfield2。我试过:
第二步
> db.myCollection.update ( { "field3": "value 4" }, {$rename: {"Subfield2": "subfield2" } } )然后再次运行find()并获得与“步骤一”中相同的结果,即未重命名该字段。
使用MongoDB术语,我想我要做的是“在数组中的嵌入式文档中重命名一个字段”。
参考资料
http://docs.mongodb.org/manual/reference/operator/rename/
发布于 2013-09-03 06:30:59
在这个问题中,似乎不可能从命令行重命名数组中的字段:
正如文档中提到的那样,无法在数组中重命名字段。您的唯一选择是迭代您的集合文档,读取它们并使用$unset旧/$set新操作更新每个文档。
但是,可以按照用户Livnat的建议,通过RockMongo更改这些值。
对于我的特殊情况,我还删除了数组,并将结构更改为:
{
"field1": "value 1",
"field2": {"subfield1": "value 2", "subfield2": "value 3"},
"field3": "value 4"
}然后,可以通过以下方法查询此对象:
db.myCollection.find( {"field2.subfield2":"value 3"} );发布于 2013-09-03 06:00:02
如果您想手动更新它,我建议您安装rockmongo,rockmongo是一个很好的工具,可以使用mongo数据库,只需在服务器上提取它并连接到您的数据库。在那里,你会发现很容易更新芒戈数据库,表和记录。
岩蒙戈
https://stackoverflow.com/questions/18585113
复制相似问题