我不想用_id
作主键,但想定义自己的键。给定以下 mongo 对象,我如何使用 mongoid 来做到这一点。
class Product
include Mongoid::Document
end
如果您想使用具有其他名称的键作为主键,那么您不能这样做。每个文档都必须有一个名为 的键_id
,其值将是主键索引条目。这就是 MongoDB 的工作方式。
但是,字段的值_id
不必是 ObjectID。你可以在那里拥有任何你喜欢的东西(除了数组,IIRC)。
从 MongoDB网站:
“在 MongoDB shell 中,ObjectId() 可用于创建 ObjectIds。ObjectId(string) 从指定的十六进制字符串创建对象 ID。”
那里也有一个代码示例
Sergio Tulentsev 说得对,_id 不一定是 ObjectID。
但是,我担心 Lynn Langit 的回答可能会产生误导。'ObjectId(string) 从指定的十六进制字符串创建对象 ID' 是真的,但这里的字符串必须是有效的 ObjectID。您不能从有意义的字符串创建 ObjectID。