2016-04-28 2 views
0

私は、データベースにこのコレクションを持っている1つの文字を置き換え、それは上のドキュメントの多くが含まれて、私は「AE」のすべてのインスタンスは、「AE」に置き換えることがしたいと思います。私は多分、find_one_and_updateのようなものを使用する必要がありますと仮定しのMongoDBは、多くの文書

{ 
    "_id" : ObjectId("57071e9fee31902f0a9ad989"), 
    "layout" : "normal", 
    "name" : "Æther Flash", 
    "manaCost" : "{2}{R}{R}", 
    "cmc" : 4, 
    "colors" : [ "Red" ] 
} 

マイドキュメントは、次のようになり?

+0

すべて私がこれまでに達成できるが db.getCollection( 'AllCards')でそれらのすべてを見つけることである({ '名前':{ '$の正規表現': 'Æを'}})を見つける。 –

+0

することができますしてくださいサンプル文書を表示しますか? – styvane

+0

{ "_id":のObjectId( "57071e9fee31902f0a9ad989")、 "レイアウト": "正常"、 "名前": "霊気フラッシュ"、 "manaCost": "{2} {R} {R}"、 "cmc":4,"colors":[ "Red" } –

答えて

3

これは動作するはずです。あなたがどれくらい大きなDBを持っているかによっては時間がかかるかもしれませんが、それはMTG dbを考えると大きくなるかもしれませんが)、うまくいくはずです。

db.getCollection('AllCards').find({$or: [{name: {$regex: 'Æ'}}, {name: {$regex: 'æ'}}]}).forEach(function (x) { 
    x.name = x.name.replace(/Æ/g, 'Ae').replace(/æ/g, 'ae'); 

    db.getCollection('AllCards').save(x); 
}); 

もちろん、名前にはÆsのみが含まれます。しかし、すべての必要な分野でそれを動作させる方法を整理することができます。

関連する問題