我怎样才能使MongoMapper使用短的,自动递增的整数ID而不是那些荒谬的长默认ID?

时间:2012-06-06 19:12:18

标签: ruby mongodb mongomapper

我正在使用Sinatra和MongoMapper在Ruby中编写错误跟踪软件。问题是票证ID不是非常用户友好;它们由24个十六进制数字组成(例如4fcfa9e1c3e7f20bc2000004)。我希望票证ID从1开始并自动递增(即1,2,3 ......)。在MySQL中,这将使用AUTO_INCREMENT完成。

然而,我正在使用MongoMapper。有没有办法让ID从1开始然后自动增加,或者我是否需要将它们单独存储

2 个答案:

答案 0 :(得分:1)

MongoDB docs列出了一些自动递增ID的策略。

通常,自动递增ID的问题在于它们无法扩展。使用自动递增,您需要一个实体来提供密钥,这将成为瓶颈。所以默认是使用对象ID。

这就是说,你的创作速度可能不是那么快,你可以利用链接文档中的想法。此外,您可能希望查看类似JIRA的内容,其中ID以某种合理的方式生成,与项目有关。

答案 1 :(得分:1)

如果你有很多很多的对象创建,它可能无法扩展b / c你必须为每个新对象点击数据库。

如果你不需要这种缩放,那里有一些宝石允许增量id。

Pablo Cantero的宝石,mongomapper_id2

我的宝石,mongo_sequence

在了望中,可能有一些地方MongoMapper对ObjectID的特殊行为不适用于整数。我至少知道,在一年半之前,所有基本的东西都可以正常使用整数id。