第一步
> 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术语,我认为我要做的是'重命名数组中嵌入文档中的字段'。
参考
答案 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数据库,表格和记录。