1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

crowiを引っ越しして切れたリンクをMongoDBから全置換するJavascript

Posted at

はじめに

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 

参考にした記事

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?