据我所知,你可以调用ObjectId("");生成一个新的身份。
是否可以生成一个随机ID,该ID在数据库/集合中尚不存在且具有特定格式?
在我的情况下,我希望对象id生成一个唯一的随机10位数字。
所以结果应该是:
var ObjectId = require('mongodb').ObjectID
var id = new ObjectId("something");
console.log(id) ==> 0123456789
答案 0 :(得分:1)
在评论中,您最好的选择是在插入文档时获得当年的秒数。但真正的问题是新文件的插入是多么密集。您需要考虑多个因素,首先是您插入的文档越多,您的ID在一个点碰撞的可能性就越大。
我建议只留下标准的GUID mongo为你生成,但是我能从头脑中想到的解决方案是获取当前年份的秒数,获得最后5位的子串,然后生成5个随机数字并将它们合并在一起。
new Date().getTime().toString().substring(8) + Math.floor(Math.random() * (99999 - 10000)) + 100000;
使用上述(80位),您将在1000000个文档上获得4.135898×10-13
碰撞概率。