How to replace string in all documents in Mongo

javascript, mongodb, mongodb-query

Solution

It doesn't correct generally: if you have string `http://aaa/xxx/aaa` (`yyy` equals to `aaa`) you'll end up with `http://bbb/xxx/bbb`. But if you ok with this, code will work.

To add debug info use `print` function:

var cursor = db.test.find();
while (cursor.hasNext()) {
  var x = cursor.next();
  print("Before: "+x['source']['url']);
  x['source']['url'] = x['source']['url'].replace('aaa', 'bbb');
  print("After: "+x['source']['url']);
  db.test.update({_id : x._id}, x);
}

(And by the way, if you want to print out objects, there is also `printjson` function)

Problem

I need to replace a string in certain documents. I have googled this code, but it unfortunately does not change anything. I am not sure about the syntax on the line bellow: ``` pulpdb = db.getSisterDB("pulp_database"); var cursor = pulpdb.repos.find(); while (cursor.hasNext()) { var x = cursor.next(); x['source']['url'].replace('aaa', 'bbb'); // is this correct? db.foo.update({_id : x._id}, x); } ``` I would like to add some debug prints to see what the value is, but I have no experience with MongoDB Shell. I just need to replace this: ``` { "source": { "url": "http://aaa/xxx/yyy" } } ``` with ``` { "source": { "url": "http://bbb/xxx/yyy" } } ```

Original source