范围:
我有几个需要在服务器上托管的MongoDB集合,这些集合需要“固定”(价格规范化和某些属性值和名称的更改)。
为了解决这些问题,我目前正在本地Robomongo工具上执行foreach命令(而不是在服务器上),但是该过程花费的时间比我预期的长。
这是我要用来确定商品价格的命令之一。
db.Products_PoC.find().forEach( function(myDoc) {
myDoc.price = (myDoc.price.toFixed(2)) * 100;
db.Products_PoC.save (myDoc);
});
故障排除:
快速排除故障后,该工具似乎正在客户端而不是所有服务器端上运行此操作(这会更快)。快速浏览任务管理器,可以看到Robomongo进程的网络使用率高达5.5 mb / s。
问题:
有什么办法可以在服务器上而不是在本地运行这样的命令?
您可以使用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这里。请注意,db.eval将对数据库进行全局写锁定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句