2010-06-25 52 views

回答

2

A MongoMapper::Document作爲頂級記錄保存到數據庫中。 A MongoMapper::EmbeddedDocument保存在另一個文檔中。例如,假設我有一個博客應用程序。我有一個PostComment模型。他們可能是這個樣子:

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應對類似的方法方面findsave。 A MongoMapper::EmbeddedDocument只能通過其父文檔進行訪問。這意味着你只能將MongoMapper::EmbeddedDocument用於顯然是其父模型附屬的模型,並且只能在該父類的上下文中使用。

相關問題