如何使用Mongoid为MongoDB文档定义自己的主键

时间:2012-05-14 21:50:01

标签: ruby mongodb mongoid

我不想使用_id作为主键,但想要定义自己的密钥。如果给出以下mongo对象,我怎样才能使用mongoid。

class Product
  include Mongoid::Document

end

3 个答案:

答案 0 :(得分:3)

如果您想将密钥与其他名称一起用作主键,则无法执行此操作。每个文档都必须有一个名为_id的密钥,其值将是主键索引条目。这就是MongoDB的工作原理。

_id字段的值不一定是ObjectID。你可以在那里找到你喜欢的任何东西(阵列,IIRC除外)。

答案 1 :(得分:1)

来自MongoDB site

“在MongoDB shell中,ObjectId()可用于创建ObjectIds.ObjectId(string)从指定的十六进制字符串创建一个对象ID。”

还有一个代码示例

答案 2 :(得分:1)

Sergio Tulentsev做对了,_id不一定是ObjectID。

但是,我担心Lynn Langit的回答可能会产生误导。确实'ObjectId(string)从指定的十六进制字符串创建一个对象ID',但这里的字符串必须是有效的ObjectID。您无法从有意义的字符串创建ObjectID。