2010-07-27 47 views
4

我正在實施基於MongoDB的博客。Mongo一對多關係和更新問題

讓我們來看看第一個蒙戈如何傢伙建議我們存儲的博客文章和評論意見(http://www.mongodb.org/display/DOCS/Schema+Design):

  • 的帖子應該是一個集合。評論應該是嵌入對象中的表現。

我發現編輯或只是批准這個模式中的註釋非常困難。

由於評論是Post文檔的一部分,我無法單獨編輯它,因爲它沒有標識符可以在評論集合中找到它。

這就是爲什麼我一次編輯所有評論。另一個問題是,在我編輯所有評論的同時,有人可能會發布新評論,並且在保存評論集合後會被覆蓋。

可能是我做錯了什麼?或者Mongo所描述的用例期望這些評論不會被編輯。

Regards, Alexey Zakharov。

+0

這適用於大多數文檔數據庫。自己來對抗。 – mxmissile 2010-07-27 19:51:36

回答

3

你應該可以使用Atomic Operators來解決'保存所有評論'的問題。例如,這樣的事情應該工作:

db.posts.update({ _id: [ID] }, { $set: { "comments.5.body" : "New Comment Body" } }) 

編輯:只是在我上面的回答擴大。原子操作符的工作方式是隻更新您告訴他們的特定字段,而不是整個文檔。這不僅使您的更新更簡潔,而且更快。特別是如果在你的例子中,你有一個很大的博客文章,有很多評論。

+0

我可以證實這確實是答案。 – 2010-07-28 17:09:01

+0

謝謝史蒂文。我之前沒有聽說過點符號 - http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29。 – 2010-07-29 03:26:04