当前位置: 首页 > 知识库问答 >
问题:

如何解决mongodb 16m 文档限制的问题?

壤驷德寿
2023-05-02

比如我要存一个论坛的所有帖子信息,那么帖子信息都是属于同一个mongodb document的,也就是属于同一个messages 表的。遇到这种问题应该怎么解决阿,不可能命名一个别的表吧?

共有4个答案

边桐
2023-05-02

能,咋弄的我忘了,几年前弄过,几百个G数据

甘兴学
2023-05-02

你的这个问题可以通过把帖子和评论分别存储在不同的集合(而不是同一个文档中)来解决。
posts 的集合,用于存储论坛帖子:


{
  _id: ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx"),
  title: "Post title",
  content: "Post content",
  author: "User123",
 
}

comments 的集合,用于存储评论:

{
  _id: ObjectId("yyyyyyyyyyyyyyyyyyyyyyyy"),
  postId: ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx"), // 引用关联帖子的 _id
  content: "Comment content",
  author: "User456",
  
}

你可以用 MongoDB 的聚合框架 $lookup 来实现查询帖子和评论:。

db.posts.aggregate([
  {
    $match: { _id: ObjectId("xxxxxxxxxxxxxxxxxxxxxxxx") }
  },
  {
    $lookup: {
      from: "comments",
      localField: "_id",
      foreignField: "postId",
      as: "comments"
    }
  }
])
陆卓
2023-05-02

比如我要存一个论坛的所有帖子信息,那么帖子信息都是属于同一个mongodb document的,也就是属于同一个messages 表的。—— 过于愚蠢

帖子有帖子的表

评论有评论的表

通过“外键”建立一对多关系

别说什么 mongodb 没有外键,这里的外键加了引号
浦毅
2023-05-02

不太懂你的问题,不过即使是关系数据库,特别庞大的业务场景也要分库分表。

所以你的问题,我觉得就两种解法:

  1. 按逻辑拆分成多表
  2. 按时间、地域等拆分成多表
 类似资料:
  • 问题内容: 我正在从Java Collection Framework寻找一个不允许使用null元素的类。 你认识一个吗 问题答案: 大多数实现(值得注意的例外)不接受。 是一种不允许值的专用实现。

  • 本文向大家介绍解决ASP.NET Core Mvc文件上传限制问题实例,包括了解决ASP.NET Core Mvc文件上传限制问题实例的使用技巧和注意事项,需要的朋友参考一下 一、简介 在ASP.NET Core MVC中,文件上传的最大上传文件默认为20MB,如果我们想上传一些比较大的文件,就不知道怎么去设置了,没有了Web.Config我们应该如何下手呢? 二、设置上传文件大小 1.应用程序级

  • 问题内容: 我知道这个问题已经发布了很多次,但是我想询问详细信息, 使用Oracle,您不能向IN子句传递1000个以上的参数,因此,将hibernate与oracle结合使用可以解决此问题,例如: 1-对于每个1000个参数列表,在IN子句之间使用OR子句,但这不适用,因为oracle的另一个限制是整个查询参数不超过2000 2-使用for循环,每次以1000个参数列表的形式运行查询,然后附加所

  • 我的用户可以在子集合中创建文档(比如任务),并使用一系列安全规则检查身份验证、权限和数据有效性。他们甚至可以选择多个任务并将其复制到同一集合中。现在,一个普通用户可能一次最多创建100个任务,但如果有人恶意获取我的数据库凭据,进行身份验证,并尝试以编程方式创建大量有效文档,该怎么办?这将使Firestore的扩展不会出现问题,也会给我的Firebase账单带来意想不到的惊喜。这是我首先关心的问题,

  • 问题内容: 下面的程序引发NullPointerException。在Log cat中,它显示: 单击该按钮时,它不会进入Mousefragment类。我试图解决它,但是我不能-如何解决这个问题? 编辑 单击该按钮多少次,该异常随同invalid_ip Toast消息一起显示 问题答案: 如前所述,您的问题询问如何解决此问题。 您需要弄清楚在哪里抛出。为此,请查看堆栈跟踪以查看引起问题的行。然后,

  • 问题内容: 我在做一个 用。我有我的输出。有人可以帮我吗?谢谢。 sendMailServlet代码: 在GlassFish 2.1上的输出: 问题答案: 您需要实施一个自定义 现在在 另请查看JavaMail常见问题解答