【发布时间】:2011-12-09 04:22:42
【问题描述】:
为每个用户使用子集合(大约 15 个)有什么意义吗?用户数量约为10k。子集合中的记录量可以达到2M。或者也许我应该使用普通的大集合?感谢您的回答。
【问题讨论】:
标签: mongodb collections
为每个用户使用子集合(大约 15 个)有什么意义吗?用户数量约为10k。子集合中的记录量可以达到2M。或者也许我应该使用普通的大集合?感谢您的回答。
【问题讨论】:
标签: mongodb collections
嵌入式集合使数据库更简单(它们减少了集合的数量)并使数据库更快地工作。我通常会尝试嵌入所有内容,只有当我不能创建单独的集合时。如果您的嵌入式集合很大,您可以在加载过程中将其从用户中排除:
db.posts.find( { tags : 'tennis' }, { comments : 0 } );
以上查询将加载没有 cmets 的帖子。 Documentation
但嵌入式集合也增加了一些复杂性。例如,您的 mongodb 无法为您排序嵌入式集合。订单始终默认。但是您可以在客户端执行此操作。 如果默认顺序适合您,您可以通过 $slice 对嵌套集合进行分页:
db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
还可以看看这个doc关于架构设计。
所以 +1 尽可能嵌入。
【讨论】: