0
This example使它看起來像兩個都被使用(include
四)爲了使一個類是一個持久化模型,但它不清楚什麼時候我應該使用一個或另一個。在MongoMapper上,Document和EmbeddedDocument有什麼不同?
This example使它看起來像兩個都被使用(include
四)爲了使一個類是一個持久化模型,但它不清楚什麼時候我應該使用一個或另一個。在MongoMapper上,Document和EmbeddedDocument有什麼不同?
A MongoMapper::Document
作爲頂級記錄保存到數據庫中。 A MongoMapper::EmbeddedDocument
保存在另一個文檔中。例如,假設我有一個博客應用程序。我有一個Post
和Comment
模型。他們可能是這個樣子:
require 'mongo_mapper'
MongoMapper.database = 'test'
class Post
include MongoMapper::Document
key :title
key :body
key :comments
many :comments
end
class Comment
include MongoMapper::EmbeddedDocument
key :author
key :body
end
p = Post.new(:title => 'Some post', :body => 'About something')
p.comments << Comment.new(:author => 'Emily', :body => 'A comment')
p.save
puts Post.all.map(&:inspect)
會產生一個文件在你的Mongo的數據庫,看起來像這樣:
{ "_id" : ObjectId("4c4dcf4b712337464e000001"),
"title" : "Some post",
"body" : "About something",
"comments" : [
{
"body" : "A comment",
"author" : "Emily",
"_id" : ObjectId("4c4dcf4b712337464e000002")
}
] }
通過MongoMapper與他們的互動,只有MongoMapper::Document
應對類似的方法方面find
和save
。 A MongoMapper::EmbeddedDocument
只能通過其父文檔進行訪問。這意味着你只能將MongoMapper::EmbeddedDocument
用於顯然是其父模型附屬的模型,並且只能在該父類的上下文中使用。