2017-05-07 8 views
0

任意のフィールドに新しい値で古い値を置き換える:のMongoDB複数見つけ、私が見つけて、次のパターンですべての私の文書に(更新)任意のフィールドの値を交換したい

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

私は何百ものを持っていますこのような古い値や新しい値が複数のフィールドにまたがっているので、フィールド内のどこにいてもそれらを探し、それに対応する新しい値で更新したいと考えています。

どうすればいいですか?

+0

配列の値を更新したいようですか?あなたが書いたものは有効なJSONオブジェクトではないので、私たちが今見ているものはわかりません。また、私はこれが良い質問であるとは確信していません。私はモッズがそれにフラグを立てると思う。これを読んでいる人にとっては、「このコードを私のために解決する」よりも多くの学習経験が必要です。 – 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); 
     } 
    } 
関連する問題