首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Rockmongo重命名字段

用Rockmongo重命名字段
EN

Stack Overflow用户
提问于 2012-03-20 14:47:04
回答 1查看 1.4K关注 0票数 0

我在mongo数据库中有许多文档集合,如下所示:

代码语言:javascript
复制
{
   "_id": ObjectId("4ee5e9079b14f74ef14ddd2f"),
   "number": 456,
   "date": "2012-02-13"
}

我需要将字段"created_at"重命名为"date",并且我正在使用Rockmongo。我认为重新命名这个字段的最好方法是使用Rockmongo中的execute面板。基于this post的代码,我尝试了这样的方法:

代码语言:javascript
复制
function rename(x){
   db_name.coll_name.update({"_id":x._id}, {
      $rename: {"date":"created_at"}
   });
}

db_name.coll_name.find({"date":{$ne:null}}).forEach(rename);

但没有成功。我主要是使用pymongo (并且可以使用它),但是我认为学习这个执行面板将是非常有帮助的,因为我继续使用rockmongo。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-20 16:28:45

如果您想要完成集合中的所有文档,可以同时进行多个更新,如下所示:

代码语言:javascript
复制
db.coll_name.update({},{$rename:{"created_at":"date"}},false,true);

其中,"false“是upsert选项,"true”是多更新选项。

希望这能有所帮助。

用一个例子更新。如果该字段已经部分重命名,或者该字段并不存在于所有文档中,则甚至可以使用该字段:

代码语言:javascript
复制
> db.test2.insert({x:12});
> db.test2.insert({x:12});
> db.test2.insert({x:12});
> db.test2.insert({});
> db.test2.update({},{$rename:{"x":"x2"}},false,true);
> db.test2.find();
{ "_id" : ObjectId("4f68afb1206dcc69f52c2157"), "x2" : 12 }
{ "_id" : ObjectId("4f68afb2206dcc69f52c2158"), "x2" : 12 }
{ "_id" : ObjectId("4f68afb2206dcc69f52c2159"), "x2" : 12 }
{ "_id" : ObjectId("4f68afb5206dcc69f52c215a") }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9789017

复制
相关文章

相似问题

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