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