5

編集したいMongoに次のデータ構造があります。

{
   "images" : [{
      "image_id" : 46456,
      "image_path" : "http://cdn.site.com/image.jpg",
      "image_thumbnail" : "http://cdn.site.com/image.jpg",
      "image_detailed" : "http://cdn.site.com/image.jpg",
      "image_type" : "0"
    }, {
      "image_id" : 46452,
      "image_path" : "http://cdn.site.com/image.jpg",
      "image_thumbnail" : "http://cdn.site.com/image.jpg",
      "image_detailed" : "http://cdn.site.com/image.jpg",
      "image_type" : "2"
    }, {
      "image_id" : 46453,
      "image_path" : "http://cdn.site.com/image.jpg",
      "image_thumbnail" : "http://cdn.site.com/image.jpg",
      "image_detailed" : "http://cdn.site.com/image.jpg",
      "image_type" : "0"
    }, {
      "image_id" : 46454,
      "image_path" : "http://cdn.site.com/image.jpg",
      "image_thumbnail" : "http://cdn.site.com/image.jpg",
      "image_detailed" : "http://cdn.site.com/image.jpg",
      "image_type" : "A"
    }]
}

どのフィールドにあるかに関係なく、配列全体のすべての「http」を「https」に置き換えたいと思います。

どうすればいいですか?

ありがとう。

4

1 に答える 1

7

MongoDB には組み込み機能はありません。すべてのレコードをループすることで、すべての http を https に置き換えることができます。Mongo シェルでは、次のように実行できます。

String.prototype.replaceAll=function(s1, s2) {return this.split(s1).join(s2)}

var cursor = db.myCollection.find({},{_id:0});
while(cursor.hasNext()) {
    var obj = cursor.next();
    var objStr = JSON.stringify(obj);
    var newObjStr = objStr.replaceAll("http","https");
    db.myCollection.update(obj,JSON.parse(newObjStr));
}
于 2013-10-11T09:10:11.810 に答える