我正在尝试从DocumentReference对象获取自动生成的ID
DocumentReference docref = db.collection("users").document();
String ID = check.getID();
问题是,由于ID是在客户端生成的,因此当存储中的两个ID超过一百万个文档,并且当我使用.set()时,文档中的2个ID可能彼此相似。 。我看到了其他答案,但没有一个解决了我的疑问。
[在撰写本文时,Firestore Auto ID(至少在JavaScript SDK中)是从字符a-z
,A-Z
和0-9
中选择的20个随机字符构成的-因此,从62个可能的字符中选择了20个字符字符。
这意味着存在62^20
(或7.01e35
)个不同的可能组合。
这与2^120
中使用的Realtime Database可能组合非常相似(-
可能的组合也使用_
和64^20
字符。
[RTDB的推送ID和Firestore的自动ID之间的主要区别在于,自动ID并非根据设备时间戳进行编码-所有〜120位都是随机的。
因此,从统计学上讲,您不太可能会遇到碰撞。但是,您始终可以使用自己的系统生成自己的ID,或使用uuid
程序包中的某些内容生成128位或更大的ID。