如果MongoDB文档是带有评论的博客文章,那么当评论超过4MB时它将无法扩展?

时间:2010-09-11 01:20:55

标签: mongodb

在MongoDB页面中:http://www.mongodb.org/display/DOCS/Inserting

doc = { author: 'joe',
  created : new Date('03/28/2009'),
  title : 'Yet another blog post',  
  text : 'Here is the text...',  
  tags : [ 'example', 'joe' ],  
  comments : [ { author: 'jim', comment: 'I disagree' },              
               { author: 'nancy', comment: 'Good post' }  ]}

db.posts.insert(doc);
db.posts.find( { "comments.author" : "jim" } )

当评论超过4MB时,这个文件不起作用吗?我们可以说,它很难超过4MB,但我想一个系统如果仅限于这样的评论的大小或数量,将会有一点限制。如果它是关系模型,那么除了磁盘空间之外没有这样的限制。

或者是否有其他方式来处理评论,以便它可以是任何大小?

2 个答案:

答案 0 :(得分:5)

我认为你想要分享4MB的评论。

根据文档,您应该设计为当前的4MB限制。所以有两个想法:

  • 将评论块化为文档(例如,每个文档1000个)
  • 将每条评论作为自己的文档存储在“评论”集合中

答案 1 :(得分:1)

是的,如果评论增长超过4MB,则会出现问题。您可以使用mongo DbRef更改您的设计。

将您的文档拆分为两个,如Blog&评论

var comment = { id:"xx",
                 comments : [ { author: 'jim', comment: 'I disagree' },              
                           { author: 'nancy', comment: 'Good post' }  ]}
               }

此评论文件将包含与特定帖子相关的所有评论。并使用Dbref将此评论嵌入博客中,例如

   db.comments.save(comment)
   var doc = { author: 'joe',
               created : new Date('03/28/2009'),
               title : 'Yet another blog post',  
               text : 'Here is the text...',  
               tags : [ 'example', 'joe' ],  
               comments : [ new DBRef('comments', comment ._id) ] 
             }
   db.blog.save(doc)