2017-05-07 36 views
0

我想找到與下面的模式替換(更新)的任何字段的值在我所有的文件替換舊值與新值:MongoDB的多個發現和在任何領域

{[<oldValue1>:<newValue1>,<oldValue2>:<newValue2>,<oldValue3>:<newValue3>]} 

我有上百個這種舊/新的價值觀,並且它們分佈在多個領域,我想在他們在領域中的任何地方尋找他們,並用他們相應的新價值來更新他們。

我該如何做到這一點?

+0

它看起來像你想更新數組中的值是正確的?你寫的不是一個有效的JSON對象,所以我不知道我們現在看到的是什麼。另外我不確定這是一個好問題。我認爲mods會標記它。對於每個人來說,這應該是更多的學習體驗,而不是:「爲我解決這個問題」。 – Dex

+0

是否要將值更新爲新值,或者是否希望以指定的模式更新值? –

+0

@ShantanuMadane他們應該根據模式更新。例如,無論在哪個域中,舊值12345都將被替換爲新值「67890」。 – cplus

回答

0
Try this solution. 

var cursor = db.test.find(); 
     while (cursor.hasNext()) { 
      var x = cursor.next(); 
      var arr=[{"oldvalue":"newvalue"},{"oldvalue":"newvalue"}]; 
      for(var i=0;i<arr.length;i++){ 
      var keys=Object.keys(arr[i]);  
      print("Before: "+keys[0]); 
      x[keys[0]] = x[keys[0]].replace(x[keys[0],arr[i][keys[0]]); 
      print("After: "+keys[0]); 
      db.test.update({_id : x._id}, x); 
     } 
    }