2017-02-09 6 views
1

からのデータと複数の文書で私はMongoDBは、このように見ていますアップデート同じフィールドJSON

[ 
    { 
     "status" : 0, 
     "name" : "Yaknow", 
     "email" : "[email protected]", 
     "_id" : "5875a42ea469f40c684de385" 
    }, 
    { 
     "status" : 1, 
     "name" : "johnk", 
     "email" : "[email protected]@this", 
     "_id" : "586e31c6ce07af6f891f80fd" 
    } 
] 

一方、すべての電子メールが変更されていると私は新しいものにJSONを得た:

[ 
    { 
     "email" : "[email protected]", 
     "_id" : "5875a42ea469f40c684de385" 
    }, 
    { 
     "email" : "[email protected]", 
     "_id" : "586e31c6ce07af6f891f80fd" 
    } 
] 

すべてのメールを更新するにはどうすればよいですか?

答えて

2

mongodbには文字列の一部を置き換えて文字列値を変更できる演算子がありません。あなたは、ドキュメントを取得する必要があり、その後、for eachドキュメントのローカルで更新された値と更新文書を準備する必要があります:私は削除して、すべてを挿入終了

db.collection.find({}).forEach(function(doc){ 
    var newEmail = doc.email.substr(0, doc.email.indexOf('@')) + "@gmail.new"; 
    db.collection.update({_id: doc._id}, {$set:{email: newEmail}}); 
}); 
+0

。それは私の特定の状況で簡単でした(魔女は、それ自体不思議です...) –

関連する問題