2010-07-27 174 views
0

我在更新mongodb中的嵌入式文檔時出現問題。
我有以下情況。 用戶模型的地址爲嵌入式文檔。
我能夠將地址嵌入到父模型,即;用戶模型,但我仍然無法弄清楚如何更新地址嵌入,即使我有嵌入地址的_id
用mongoid更新嵌入式文檔mongodb

請幫
感謝

回答

2

你必須檢索父嵌入文檔,然後進行更新操作,例如:

address = user.address 
address.update_attributes(:street => "foo") 
+0

感謝您的回覆jpemberthy, 但這仍然不適用於我。 我可以在我的開發日誌中清楚地看到像這樣 project_name_development ['people']。update({「_ id」=> BSON :: ObjectID('4c5106b6f1936f036c000008'),「address._id」=>「4c5106b6f1936f036c000006」},{ 「$ set」=> {「address.city」=>「bhaktapur」,「address.province」=>「kathmandu」}}) 我認爲應該更新地址。 我有「address.update_attributes(address_attribute)」在我的人模型,其中address_attribute是地址 我思念的東西散? – Gagan 2010-07-29 04:45:58

+0

我不確定當時會發生什麼,如果你願意,請將控制檯流程和模型代碼粘貼到要點中,以便幫助你。 – jpemberthy 2010-07-29 14:10:12

+0

感謝您的回覆。我發現我的模型有錯誤,所以沒有更新。再次感謝 – Gagan 2010-08-02 07:21:28

1

還有另一種解決方案。如果Person和Preference類之間存在多對多關係,那麼:

ruby-1.9.2-p0 > Person.count 
=> 0 
ruby-1.9.2-p0 > Preference.count 
=> 0 
ruby-1.9.2-p0 > person = Person.create 
=> #< Person _id: 4cd353e92b58af214b000006, preference_ids: []> 
ruby-1.9.2-p0 > pref = Preference.create 
=> #< Preference _id: 4cd353ee2b58af214b000007, person_ids: [], name: nil> 
ruby-1.9.2-p0 > 
ruby-1.9.2-p0 > person.preferences << pref 
=> true 
ruby-1.9.2-p0 > Preference.first.people.count 
=> 1 
ruby-1.9.2-p0 > Person.first.preferences.count 
=> 1 
ruby-1.9.2-p0 > 
ruby-1.9.2-p0 > person.preferences.first.name = 'foobar' 
=> "foobar" 
ruby-1.9.2-p0 > person.preferences.first.save 
=> true 
ruby-1.9.2-p0 > pref.reload 
=> #< Preference _id: 4cd353ee2b58af214b000007, person_ids: [BSON::ObjectId('4cd353e92b58af214b000006')], name: "foobar"> 
ruby-1.9.2-p0 > pref.name 
=> "foobar"