0

我不想用_id作主键,但想定义自己的键。给定以下 mongo 对象,我如何使用 mongoid 来做到这一点。

class Product
  include Mongoid::Document

end
4

3 回答 3

3

如果您想使用具有其他名称的键作为主键,那么您不能这样做。每个文档都必须有一个名为 的键_id,其值将是主键索引条目。这就是 MongoDB 的工作方式。

但是,字段的值_id不必是 ObjectID。你可以在那里拥有任何你喜欢的东西(除了数组,IIRC)。

于 2012-05-14T22:39:22.347 回答
1

从 MongoDB网站

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

那里也有一个代码示例

于 2012-05-14T21:53:37.530 回答
1

Sergio Tulentsev 说得对,_id 不一定是 ObjectID。

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

于 2013-12-08T14:02:35.787 回答