Mongodb一对多关系并更新问题

时间:2010-07-27 18:51:51

标签: norm mongodb

我正在实施基于MongoDB的博客。

让我们先来看看Mongo家伙如何推荐我们存储博客文章及其评论(http://www.mongodb.org/display/DOCS/Schema+Design):

  • 帖子应该是一个集合。注释应该是帖子中的嵌入对象以便提高性能。

我发现在此架构中编辑或批准评论非常困难。

由于评论是Post文档的一部分,我无法单独编辑它,因为它没有标识符可以在评论集合中找到它。

这就是我一次编辑所有评论的原因。另一个问题是,当我正在编辑所有评论时,有人可以发布新评论,并且在保存评论集后它将被覆盖。

可能我做错了什么?或者Mongo家伙描述的用例期望不会编辑评论。

此致 阿列克谢扎哈罗夫。

1 个答案:

答案 0 :(得分:3)

您应该可以使用Atomic Operators来解决“保存所有评论”问题。例如,这样的事情应该有效:

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

编辑:只是为了扩展我的上述答案。原子操作符的工作方式是仅更新您告诉它们的特定字段,而不是整个文档。这不仅使您的更新更简洁,而且速度也更快。特别是如果在您的示例中,您有一篇包含许多评论的大型博文。