首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MongoDB中的数组中重命名嵌入文档中的字段

在MongoDB中的数组中重命名嵌入文档中的字段
EN

Stack Overflow用户
提问于 2013-09-03 05:57:54
回答 2查看 3.6K关注 0票数 3

第一步

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

我想将字段Subfield2重命名为subfield2。我试过:

第二步

代码语言:javascript
复制
> db.myCollection.update ( { "field3": "value 4" }, {$rename: {"Subfield2": "subfield2" } } )

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

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

参考资料

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-03 06:30:59

在这个问题中,似乎不可能从命令行重命名数组中的字段:

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

正如文档中提到的那样,无法在数组中重命名字段。您的唯一选择是迭代您的集合文档,读取它们并使用$unset旧/$set新操作更新每个文档。

但是,可以按照用户Livnat的建议,通过RockMongo更改这些值。

对于我的特殊情况,我还删除了数组,并将结构更改为:

代码语言:javascript
复制
{
  "field1": "value 1",
  "field2": {"subfield1": "value 2", "subfield2": "value 3"},
  "field3": "value 4"
}

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

代码语言:javascript
复制
db.myCollection.find( {"field2.subfield2":"value 3"} );
票数 0
EN

Stack Overflow用户

发布于 2013-09-03 06:00:02

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

岩蒙戈

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18585113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档