在流星风险中使用自定义_id?

时间:2015-09-03 06:27:00

标签: mongodb meteor

我计划在将文档插入数据库之前创建一个_id的文档。 我想使用_id(理论上总是返回Meteor.uuid())来生成此unique id,但我觉得这是git issue

  

谢谢,好抓。没有记录的原因是   我们最终希望从字符串_ids转移到本机二进制文件   Mongo _ids虽然它在一个例子中用过,但我认为我们应该去   提前记录并稍后越过那座桥。我会这样做

它似乎是字符串id和二进制mongo之间的区别。回到我的问题,是否有充分的理由我应该避免使用我的自定义_id

2 个答案:

答案 0 :(得分:0)

MongoDB ObjectID保证算法是唯一的,因此完全是冲突安全的。您可以拥有相同的安全性,实际上只有某个增量计数器由所有应用程序服务器共享并保持不变,因此实际上重新实现了数据库服务器上的内容。

从我的POV中,您应该选择接受一点风险并生成一个随机的大型ID,或者使用MongoDB提前将它们带给您。

使用后者我的意思是您可以将自定义ID生成实现为集合中的空save,以后您可以在实际文档中使用以下用户:您将支付额外数据库的价格往返,但如果你的功能涉及移动文件,我确定它可以忽略不计。

我个人的建议是后一种解决方案。

答案 1 :(得分:0)

当您创建Mongo.Collection时,您可以选择Meteor为已经没有_id的文档选择处理创建_id的方式。您可以阅读更多相关信息here

要点的重点是已经有_id。您可以自由使用所需的任何自定义_id字段。在这一点上,这不再是一个流星问题,而是一个Mongo问题。阅读在Mongo中手动设置_id字段的优缺点。

回到你的问题,对于Meteor,没有理由避免创建自己的_id字段。如果您要使用的自定义_id唯一标识该文档,那么您就可以了。

不要担心Meteor.uuid()。它不再记录,所以我想它最终会消失。