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

时间:2013-09-03 05:57:54

标签: arrays mongodb field rename

第一步

> 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()并获得与“Step One”相同的结果,即该字段未重命名。

使用MongoDB术语,我认为我要做的是'重命名数组中嵌入文档中的字段'。

参考

http://docs.mongodb.org/manual/reference/operator/rename/

2 个答案:

答案 0 :(得分:0)

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

MongoDB rename database field within array

  

如文档中所述,无法重命名字段   在数组内。您唯一的选择是迭代您的收藏   文档,阅读它们并使用$ unset old / $ set new更新每个文档   操作

可以通过RockMongo更改这些值,但用户Liad Livnat建议。

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

{
  "field1": "value 1",
  "field2": {"subfield1": "value 2", "subfield2": "value 3"},
  "field3": "value 4"
}

然后可以通过以下方式查询此对象:

db.myCollection.find( {"field2.subfield2":"value 3"} );

答案 1 :(得分:-1)

如果你想手动更新它我建议你安装rockmongo,rockmongo是一个使用mongo数据库的好工具,只需在你的服务器上提取它并连接到你的数据库。 在那里你会发现很容易更新到mongo数据库,表格和记录。

rock mongo