我在MongoMapper中定义了一个主键。
class B
key :_id, string
key :externalId, string
end
问题在于我在B中添加了一条新记录,看来我需要明确指定_id,当它已经在外部id中定义时
B.new(:_id=>"123", :external_id=>"123 )
这没有多大意义。应该有办法将externalId指定为主键,不是吗?
答案 0 :(得分:1)
如果你的问题是BSON :: ObjectId,我创建了一个可以帮助你的插件,这个插件为MongoMapper文档增加了自动增加的id
https://github.com/phstc/mongomapper_id2
movie = Movie.create(:title => 'The Simpsons Movie')
movie.id # BSON::ObjectId('4d1d150d30f2246bc6000001')
# Here is the mongomapper_id2
movie.id2 # 1
movie2 = Movie.create(:title => 'Pirates of Silicon Valley')
movie2.id2 # 2
答案 1 :(得分:0)
我不会尝试使用mongomapper定义主键 - 它会自动为您创建_id。我不建议尝试更改此行为。
class B
include MongoMapper::Document
key :your_alternate_id, String, :index=>true
end
B.new.id
#4cf86bf1de2f8970ea000179
B.find("4cf86bf1de2f8970ea000179")
我不相信你可以创建自己的PK,复合或其他。