По принцип не е правилно:ако имате низ https://aaa/xxx/aaa (yyy равно на aaa ) ще се окажете с https://bbb/xxx/bbb .Но ако сте съгласни с това, кодът ще работи.
За да добавите информация за отстраняване на грешки, използвайте print функция:
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);
}
(И между другото, ако искате да разпечатате обекти, има и printjson функция)