我正在使用Sinatra和MongoMapper在Ruby中编写错误跟踪软件。问题是票证ID不是非常用户友好;它们由24个十六进制数字组成(例如4fcfa9e1c3e7f20bc2000004
)。我希望票证ID从1开始并自动递增(即1,2,3 ......)。在MySQL中,这将使用AUTO_INCREMENT
完成。
然而,我正在使用MongoMapper。有没有办法让ID从1开始然后自动增加,或者我是否需要将它们单独存储?
答案 0 :(得分:1)
MongoDB docs列出了一些自动递增ID的策略。
通常,自动递增ID的问题在于它们无法扩展。使用自动递增,您需要一个实体来提供密钥,这将成为瓶颈。所以默认是使用对象ID。
这就是说,你的创作速度可能不是那么快,你可以利用链接文档中的想法。此外,您可能希望查看类似JIRA的内容,其中ID以某种合理的方式生成,与项目有关。
答案 1 :(得分:1)
如果你有很多很多的对象创建,它可能无法扩展b / c你必须为每个新对象点击数据库。
如果你不需要这种缩放,那里有一些宝石允许增量id。
Pablo Cantero的宝石,mongomapper_id2。
我的宝石,mongo_sequence。
在了望中,可能有一些地方MongoMapper对ObjectID
的特殊行为不适用于整数。我至少知道,在一年半之前,所有基本的东西都可以正常使用整数id。