我计划在将文档插入数据库之前创建一个_id
的文档。
我想使用_id
(理论上总是返回Meteor.uuid()
)来生成此unique id
,但我觉得这是git issue
谢谢,好抓。没有记录的原因是 我们最终希望从字符串
_ids
转移到本机二进制文件 Mongo_ids
。虽然它在一个例子中用过,但我认为我们应该去 提前记录并稍后越过那座桥。我会这样做
它似乎是字符串id和二进制mongo之间的区别。回到我的问题,是否有充分的理由我应该避免使用我的自定义_id
?
答案 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()
。它不再记录,所以我想它最终会消失。