3

第一步

> db.myCollection.find();
{ "_id" : ObjectId("2358523892345"), "field1" : "value 1", "field2" : [ { "subfield1" : "value 2" }, { "Subfield2" : "value 3" } ], "field3" : "value 4" }

我想将该字段重命名Subfield2subfield2. 我试过:

第二步

> db.myCollection.update ( { "field3": "value 4" }, {$rename: {"Subfield2": "subfield2" } } )

然后再次运行 find() 并获得与“第一步”相同的结果,即该字段未重命名。

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

参考

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

4

2 回答 2

0

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

MongoDB重命名数组中的数据库字段

如文档中所述,无法重命名数组中的字段。您唯一的选择是遍历您的集合文档,阅读它们并使用 $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"} );
于 2013-09-03T06:30:59.930 回答
-1

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

摇滚蒙哥

于 2013-09-03T06:00:02.893 回答