范围:
我有几个需要修复的MongoDB集合" (托管在服务器上的价格标准化和某些属性值和名称的更改)。
要解决这些问题,我目前正在foreach command本地(不在服务器上)执行Robomongo tool,但这个过程比我预期的要长一些。
这是我正在运行的一个命令来修复集合的价格。
db.Products_PoC.find().forEach( function(myDoc) {
myDoc.price = (myDoc.price.toFixed(2)) * 100;
db.Products_PoC.save (myDoc);
});
故障排除:
在快速排除故障后,似乎该工具在客户端运行此操作,而不是所有服务器端(这会更快)。快速浏览一下任务管理器,可以看出Robomongo进程的网络使用速度高达5.5 mb / s。
问题:
有什么方法可以在服务器上运行这样的命令,而不是在本地运行?
答案 0 :(得分:4)
您可以使用 eval 函数在MongoDB服务器上运行代码。例如:
db.eval(function() {
db.Products_PoC.find().forEach( function(myDoc) {
myDoc.price = (myDoc.price.toFixed(2)) * 100;
db.Products_PoC.save (myDoc);
});
});
有关eval here的更多信息。请注意 db.eval 将对您的数据库进行全局写锁定。