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



我不想使用_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。不能从有意义的字符串创建对象 ID。

相关内容

最新更新