我在mongo数据库中有许多文档集合,如下所示:
{
"_id": ObjectId("4ee5e9079b14f74ef14ddd2f"),
"number": 456,
"date": "2012-02-13"
}我需要将字段"created_at"重命名为"date",并且我正在使用Rockmongo。我认为重新命名这个字段的最好方法是使用Rockmongo中的execute面板。基于this post的代码,我尝试了这样的方法:
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。
发布于 2012-03-20 16:28:45
如果您想要完成集合中的所有文档,可以同时进行多个更新,如下所示:
db.coll_name.update({},{$rename:{"created_at":"date"}},false,true);其中,"false“是upsert选项,"true”是多更新选项。
希望这能有所帮助。
用一个例子更新。如果该字段已经部分重命名,或者该字段并不存在于所有文档中,则甚至可以使用该字段:
> 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") }https://stackoverflow.com/questions/9789017
复制相似问题