将 UUID 转换为 String 以插入 mongodb

Nam*_*man 2 string shell uuid mongodb robo3t

尝试以下代码后:

db.getCollection('col').find({}).forEach(function(doc){
            var id = new UUID().toString(); // this doesn't work, neither does 'var id = new UUID();'
            db.getCollection('pubCol')
                .update({
                    "uuid" : id,
                    "deleted" : false
                    }
            , {upsert: true});
         });
Run Code Online (Sandbox Code Playgroud)

我最终分别得到以下结果

"uuid" : "UUID(\"4554a991-2b7f-4464-b871-5f4e91332630\")"
"uuid" : UUID("4554a991-2b7f-4464-b871-5f4e91332630")
Run Code Online (Sandbox Code Playgroud)

但我正在寻找

"uuid" : "4554a991-2b7f-4464-b871-5f4e91332630"
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 5

UUID().hex()返回您要查找的字符串,但不带连字符。

您可以手动拆分它,例如使用正则表达式:

UUID().hex().match(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/).slice(1,6).join('-')
Run Code Online (Sandbox Code Playgroud)

  • 它可以解决问题,但这不是 toString() 的预期用途。UUID 有 3 个方法:base64、hex 和 toString。后者返回 JS 表示。你想要十六进制的。正则表达式是缺少连字符的解决方法。我宁愿提出功能请求,以向十六进制方法添加可选的“分隔符”参数。 (2认同)