鑑於類似的文件大(百萬+)集合:的MongoDB:修改每個文件在服務器上
{ _id : ObjectId, "a" : 3, "b" : 5 }
什麼是直接在服務器上處理這些文件的最有效的方式,與結果添加到每個相同集合中的文檔?例如,添加一個密鑰c
,其值等於a+b
。
{ _id : ObjectId, "a" : 3, "b" : 5, "c" : 8 }
我更喜歡在shell中這樣做。
似乎find().forEach()
會浪費數據庫和shell之間的傳輸時間,mapReduce()
似乎打算將對象組處理成彙總數據(雖然我可能會誤解)。
編輯:我寧願不阻止的解決方案,如果有一個(比使用在客戶端上的光標等)...
似乎我可以用db.eval()來做到這一點:http://www.mongodb.org/display/DOCS/Server-side+Code+Execution#Server-sideCodeExecution-Using%7B%7Bdb.eval%28 %29%7D%7D,但這會阻止。我認爲update()可能會起作用,但似乎無法在update()中引用迭代文檔:http://stackoverflow.com/questions/3788256/mongodb-updating-documents-using-數據從最相同文檔。所以,似乎並沒有阻止除了客戶端遊標上的forEach ... – ericsoco