Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Rockmongo重命名字段_Javascript_Mongodb_Rename_Field_Execute - Fatal编程技术网

Javascript 使用Rockmongo重命名字段

Javascript 使用Rockmongo重命名字段,javascript,mongodb,rename,field,execute,Javascript,Mongodb,Rename,Field,Execute,我在mongo数据库中收集了许多文档,如下所示: { "_id": ObjectId("4ee5e9079b14f74ef14ddd2f"), "number": 456, "date": "2012-02-13" } 我需要将在“创建的”字段重命名为“date”,我正在使用Rockmongo。我认为重命名此字段的最佳方法是使用Rockmongo中的execute面板。基于我的代码,我尝试了以下方法: function rename(x){ db_name.coll_n

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

{
   "_id": ObjectId("4ee5e9079b14f74ef14ddd2f"),
   "number": 456,
   "date": "2012-02-13"
}
我需要将在“创建的
”字段重命名为
“date”
,我正在使用Rockmongo。我认为重命名此字段的最佳方法是使用Rockmongo中的execute面板。基于我的代码,我尝试了以下方法:

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。

如果您想完成收藏中的所有文档,您可以通过多次更新一次完成,如下所示:

db.coll_name.update({},{$rename:{"created_at":"date"}},false,true);
其中“false”是upsert选项,“true”是multi-update选项

希望有帮助

更新了一个例子。即使该字段已部分重命名,或者该字段不存在于所有文档中,它也可以工作:

> 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") }

谢谢,韦斯。出于某种原因,这只更改了一个文档,而不是每个文档(即使multi设置为true)。我倾向于认为这必须处理Rockmongo中的一个bug。我还尝试了$set,看看它是否有不同的行为,但仍然是同一个问题,只有一个文档被更新。你把所有4个参数都放进去了吗?您需要(,false,true)——据我所知,rockmongo只是通过javascript命令。我将尝试一下,因为我自己实际使用了rockmongo。对我来说效果很好:(所有的测试文档都更新了)我意识到我的第一个代码中有一个未终止的字符串——所以如果你完全复制它,它就不会工作了。现在修复了。是的,我使用了所有4个参数,但它仍然只能更新一个文档。我不太清楚为什么会这样。我通过pymongo运行了相同的命令,效果很好。不过谢谢你的帮助。