【问题标题】:mongo using subcollectionmongo 使用子集合
【发布时间】:2011-12-09 04:22:42
【问题描述】:

为每个用户使用子集合(大约 15 个)有什么意义吗?用户数量约为10k。子集合中的记录量可以达到2M。或者也许我应该使用普通的大集合?感谢您的回答。

【问题讨论】:

    标签: mongodb collections


    【解决方案1】:

    嵌入式集合使数据库更简单(它们减少了集合的数量)并使数据库更快地工作。我通常会尝试嵌入所有内容,只有当我不能创建单独的集合时。如果您的嵌入式集合很大,您可以在加载过程中将其从用户中排除:

    db.posts.find( { tags : 'tennis' }, { comments : 0 } );
    

    以上查询将加载没有 cmets 的帖子。 Documentation

    但嵌入式集合也增加了一些复杂性。例如,您的 mongodb 无法为您排序嵌入式集合。订单始终默认。但是您可以在客户端执行此操作。 如果默认顺序适合您,您可以通过 $slice 对嵌套集合进行分页:

    db.posts.find({}, {comments:{$slice: [20, 10]}}) // skip 20, limit 10
    

    还可以看看这个doc关于架构设计。

    所以 +1 尽可能嵌入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-27
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多