我不想使用_id
作为主键,但想要定义自己的密钥。如果给出以下mongo对象,我怎样才能使用mongoid。
class Product
include Mongoid::Document
end
答案 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。