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 shell 中,您可以执行以下操作:

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 回答