2
我有一個需要被「固定」(價格正常化和一些屬性值和名稱的變化)MongoDB的幾個集合託管的服務器上。
爲了解決這些問題,我目前在Robomongo tool上本地(不在服務器上)執行foreach command,但這個過程比我預期的要長一點。
這是我正在運行的命令之一來確定集合的價格。
db.Products_PoC.find().forEach(function(myDoc) {
myDoc.price = (myDoc.price.toFixed(2)) * 100;
db.Products_PoC.save (myDoc);
});
故障排除:
快速排除故障後,好像工具正在執行的,而不是所有的服務器端(這將是更快的方式)的客戶端此操作。快速瀏覽一下任務管理器,可以看出Robomongo進程的網絡使用率高達5.5 mb/s。
問:
有什麼辦法,我可以在服務器上運行這樣的命令,而不是在本地?
在數據庫級別或集合級別上發出鎖定嗎? 有什麼辦法可以運行「Collection.Eval()」或只鎖定特定集合的東西? – 2014-11-24 15:19:02
@MarcelloGrechiLins,我相信它在數據庫級別上,並且不確定是否可以在集合級別上執行此操作。但是,您可以使用[eval](http://docs.mongodb.org/manual/reference/command/eval/)命令和_nolock_選項。 – ialekseev 2014-11-24 17:13:23