基本上我有一个职位列表,我想知道如果我需要一个单独的收集链接到这些职位。 当然,我想显示在我的缩略名单(并在鼠标悬停的内容),但查询后的名称和内容将加载 所有评论太对了? (因为它们是嵌入的,评论数组预计会比帖子的内容大得多)这里数据重复是不可避免的?
有没有什么办法可以避免获得另一个集合,但同时避免每次我想要加载评论 知道一个职位的名称/描述?
> db.Posts.find()
{
"_id" : "123",
"Name": "test",
"Content": "wooops",
"comments" : [ {comment1}, {comment2}, {comment3} ]
}
当然,我知道我可以为注释创建另一个集合。但据我所知,在生产使用中是不可能的,因为我希望每天都有很多帖子,这意味着每个新帖子都会创建一个新的评论集。这是建议吗?据official docs说,最大收集数量是12000.尽管它说数量可以增加,但我强烈地认为这不是一个好主意。 编辑:我计算出它的绝对最大值是150万集合/ =职位。当然这还不够。
在这个问题上的任何经验,将不胜感激:)
我真的不明白为什么你没有为所有名为“评论”的评论收集“1”集合。 (并在其中放置一个post_id,这样你就可以得到帖子的评论 – frail 2011-04-27 12:41:37
@frail:你的意思是把所有帖子的所有评论放到同一个集合中?我的评论被构造成一棵树,(我这样做:[官方doc](http://www.mongodb.org/display/DOCS/Trees+in+MongoDB#TreesinMongoDB-MaterializedPaths%28FullPathinEachNode%29)我想(我是新来的数据库),查询树结构将是非常慢,因为它就像在一个巨大的水桶里钓鱼一样,并且每当我需要找到任何评论时,mongodb都会在我的db上存在任何其他评论的开销。 – Blub 2011-04-27 12:56:07
如果您不喜欢@ frail的建议,也可以单独评论集合,但同一篇文章中的同一篇文章的所有评论(与现在相同的结构,只需将评论字段移动到不同的集合中,使用相同的文章_id)。 – Thilo 2011-04-27 13:06:31