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" } }
MongoDB 4.4 introduced nine new aggregation pipeline operators, including two new operators for finding and replacing a substring. The two new operators that allow you to find and replace a substring are the $replaceOne and $replaceAll operators.
MongoDB – copyTo() Method In MongoDB, copyTo() method is used to copies all the documents from one collection(Source collection) to another collection(Target collection) using server-side JavaScript and if that other collection(Target collection) is not present then MongoDB creates a new collection with that name.
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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With