【问题标题】:Renaming a field in an embedded Document in an Array in MongoDB not working在 MongoDB 的数组中重命名嵌入文档中的字段不起作用
【发布时间】:2013-09-06 06:21:24
【问题描述】:

第一步

> 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/

【问题讨论】:

标签: arrays mongodb field rename


【解决方案1】:

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

MongoDB rename database field within array

如文档中所述,无法重命名字段 数组内。您唯一的选择是迭代您的集合 文档,阅读它们并使用 $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"} );

【讨论】:

    【解决方案2】:

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

    rock mongo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2020-05-09
      • 2021-10-24
      • 1970-01-01
      • 2019-01-27
      • 2015-10-19
      • 2014-11-03
      相关资源
      最近更新 更多