はじめに
IP 192.168.1.1 で立てたCrowiを、新規に立てた IP 192.168.1.2 にまるっとお引越しした。
引越し後、ページをあれこれ見てみると、Crowi内の記事に飛べないことがある。
どうやらURLを http://192.168.1.1...
と直接書いているところがいっぱいある。。。Oh...
やりたいこと
Crowiの記事データが保存されているMongoDBにつなぎ、問題の文字列を全部置換したい。
前提 | 今回の対象 |
---|---|
CrowiDB名 | crowidb |
置換元 | 192.168.1.1 |
置換先 | 192.168.1.2 |
対象コレクション | revisions |
対象フィールド | body |
環境によって読み替えてください。
バックアップなどは自己責任でお願いします。
まとめると、、、
crowidbの記事が入っているコレクション(revisions)の本文要素(body)の対象文字列を全て置換します。
処理は以下の通り
replace_crowi_db.js
// MongoDBのcrowidb中、IPを全置換する
var obj = {};
var rgExp = /192.168.1.1/g;
var replaceText = "192.168.1.2";
db.revisions.find({body:rgExp}).forEach(
function(e){
if (e.body != null) {
obj.body = e.body.replace(rgExp, replaceText);
writeResult = db.revisions.update({"_id":e._id}, { $set : obj } );
if (writeResult.hasWriteError() || writeResult.hasWriteConcernError()) {
// 更新エラー
print("Replace faild : _id = " + e._id );
}
}
});
print("置換完了");
実行
Terminal
mongo crowidb --quiet replace_crowi_db.js