Mongo one to many relation and update problems
I'm implementing blog based on MongoDB.
Let's look at first how Mongo guys recommend us to store blog post and 开发者_如何学JAVAits comments (http://www.mongodb.org/display/DOCS/Schema+Design):
- posts should be a collection. comments should be embedded objects within a post for performance.
I found that it is very difficult to edit or just approve comments in this schema.
Due to comment is a part of Post document i cannot edit it separately because it has no identifier to find it in comments collection.
That is why I'm editing all comments at once. Another problem is that while i'm editing all comments at once someone could post a new comment and it will overrided after saving of comments collection.
May be I'm doing something wrong? Or the use case described by Mongo guys expect that comments won't be edited.
Regards, Alexey Zakharov.
You should be able to use Atomic Operators to get around the 'saving all comments' issue. For example, something like this should work:
db.posts.update({ _id: [ID] }, { $set: { "comments.5.body" : "New Comment Body" } })
Edit: Just to expand on my above answer. The way atomic operators work is by only updating the specific field(s) you tell them to, rather than the whole document. This not only makes your update more concise but also considerably faster. Especially if, in your example, you have a large blog post with many comments.
精彩评论