数据重复在这里是不可避免的吗?

时间:2011-04-27 12:36:31

标签: database-design mongodb

基本上我有一个帖子列表,我想知道我是否需要单独收集这些帖子的链接。 当然我想在我的缩略列表中显示postname(以及鼠标悬停内容),但查询postname和content会加载 所有评论都太对了吗? (因为它们是嵌入的。评论数组预计会比帖子“内容”大得多)

有什么方法可以避免收到另一个集合,但同时避免加载评论 每次我想知道帖子的名称/描述?

> db.Posts.find()
{ 
  "_id" : "123",
  "Name": "test",
  "Content": "wooops", 
  "comments" : [ {comment1}, {comment2}, {comment3} ]
}

当然,我知道我可以为评论创建另一个集合。但据我所知,在生产使用中是不可能的,因为我希望每天都有很多帖子,这意味着每个新帖子都会创建一个新的评论集合。这是推荐的吗?至于official docs说,最大收集数是12000.虽然它说数量可以增加,但我强烈认为这不是一个好主意。 编辑:我计算了它,绝对最大值是150万个集合/ =帖子。当然这还不够。

非常感谢有关此事的任何经验:)

1 个答案:

答案 0 :(得分:1)

  

但是查询帖子名称和内容会加载所有评论吗?

不一定。 MongoDB允许您加载部分文档(类似于SQL中的投影,您只选择某些字段)为此,您需要向find()查询添加第二个参数,提供列出要返回的元素的文档:

> db.Posts.find({}, {Name:true, Content:true})