Skip to content

mongodb collection uuid how to update?

How to create collection in mongodb with specific uuid or update the uuid ?

 db.runCommand( { listCollections: 1.0 })
"uuid" : UUID("8d1e5add-9e49-4ff5-af4f-abf12e40b078")

Adding details: When I create a collection mongodb generate automatically uuid and if this is replicaSet the uuid is replicated to all SECONDARY members via the oplog:

 PRIMARY> use test
 PRIMARY> db.createCollection("theTest")
 PRIMARY> use local
 PRIMARY> db.oplog.rs.find({}).sort({$natural:-1})
 { "ts" : Timestamp(1632477826, 1), "t" : NumberLong(56), "h" : NumberLong("8154379731463656698"), "v" : 2, "op" : "c", "ns" : "test.$cmd", "ui" : UUID("7710a307-020a-48bf-916c-db94544f8586"), "wall" : ISODate("2021-09-24T10:03:46.145Z"), "o" : { "create" : "theTest", "idIndex" : { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_", "ns" : "test.theTest" } } }

But I would like to know if there is an option this UUID to be created with command or updated ?

Maybe there is an option to apply oplog entry with modified UUID?

Thanks,

Answer

I have found the answer, for those who are interested here is the solution:

 var uuid = UUID("a6c3c5c8-8424-4a06-96a1-4082c349c6f1");
 var ops = [{ "op": "c","ns": "test.$cmd","ui": uuid,"o": {"create": "newTest","idIndex": {"v": 2, "key": {"_id": 1}, "name": "_id_", "ns": "test.newTest"} } }];
 db.adminCommand({applyOps: ops});