1

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

但是,我正在使用 MongoMapper。有没有办法让 ID 从 1 开始然后自动递增,还是我需要单独存储它们?

4

2 回答 2

1

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

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

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

于 2012-06-06T20:29:11.383 回答
1

如果您创建了很多很多对象,它可能无法扩展 b/c,您必须为每个新对象访问数据库。

如果您不需要这种缩放,那么有几个宝石可以允许增量 id。

Pablo Cantero 的宝石mongomapper_id2

我的宝石,mongo_sequence

请注意,可能有几个地方 MongoMapper 对ObjectID's 有特殊行为,但不适用于整数。我至少知道,在一年半之前,所有基本的东西都适用于整数 id。

于 2012-06-07T13:08:47.417 回答