让我们考虑博客网站的一个例子,我想在两个不同的文档中保存问题和回复。我知道这也可以使用Embedding
文档完成,但我们假设我们需要两个不同的文档。
我在问题和答复上都有Like
选项。如果用户喜欢在question's objectID
文档中存储特定Like
的问题,并且对于回复中的相似内容。
现在我想知道我在objectID's
文档中存储的Like
是否会产生冲突。就像question's objectid
same
与reply's objectid
一样ObjectID
。是否有可能发生此类冲突?
在Mongodb $.ajax({
url: '/Name',
文档中提供了以下内容:
ObjectId是一个12字节的BSON类型,使用:
构造一个4字节的值,表示自Unix纪元以来的秒数,
一个3字节的机器标识符,
一个2字节的进程ID,
一个3字节的计数器,以随机值开始。
答案 0 :(得分:0)
从Documentation开始,它很可能是唯一的,而不是唯一的。
答案 1 :(得分:0)
它适用于所有实际目的。提到的非唯一性是一个相当理论的。
<{p}}中的ObjectId is constructed
所以,在中位数,除非你每个客户每秒写超过3080个文件,你应该保存。
需要注意的是_id
有一个独特的约束:即使如果你试图写两次相同的ObjectId,那也是例外。
附注:即使是哈希算法(如MD5)或(在较小程度上)SHA256也有轻微的碰撞机会。但是有了一个独特的约束,你就是安全的。
编辑:由于在非常非常罕见的情况下抛出异常,生成两个相同的ObjectId并尝试同时编写,您只需通过生成一个新的ObjectId来处理它们并尝试再次保存文件。