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

高效连接的MongoDB建模

熊嘉茂
2023-03-14

我有两个收藏品。

    null

员额

  • post_id
  • user_id
  • 主题
  • 正文
  • 附件
  • 创建_at
  • 更新_at

(User和Posts集合都有2000000个文档)

    null

所以我先提取过滤过的用户。

db.users.distinct("user_id", 
    {
      "region": "US", 
      "score": {"$lte": `SOME_VALUE`, "$gte": `SOME_VALUE`}, 
      "birdhay": {"$lte": `SOME_VALUE`, "$gte": `SOME_VALUE`}
    }
)

并通过过滤的用户提取帖子。

db.posts.find({"user_id": {"$in": [FILTERED_USER_LIST]}}).order_by('post_id').limit(10)

但随着服务的成长,帖子和用户数据将会增加。

这里有其他性能改进吗?

任何建议,非常感谢。

共有1个答案

路伟
2023-03-14

我的建议是重新设计模式,因为UserPosts的模式设计类似于RDBMS数据库中典型的规范化表,例如表User和表post由外键约束相关。

MongoDB是一个NoSQL数据库,因此优化的模式设计是将User嵌入到posts集合中,这样您就可以将用户的详细信息与post一起提供了。即使我们将有用户记录/数据复制在多个帖子,这将是更有效的。

 类似资料:
  • 我创建了一个ssl mongodb连接,如下所示 但在那之后,其他外部rest调用(用于翻译api,google的示例获取语言)失败,并给出以下错误。 由:sun.security.validator.validatoreXception:PKIX路径生成失败:sun.security.provider.certPath.SunCertPathBuilderException:找不到请求目标的有效

  • 我面临mongo DB连接问题。 我成功地将tMongo组件导入我的Talend Open Studio 5.1.1,并复制了mongo 1.3。jar文件到lib/java文件夹,我的Mongo DB作业正在成功运行,但问题是,即使我为mongoDB提供了一些假服务器路径(IP)和假端口,我的作业运行时没有出现错误,它给了我一行没有数据的数据。正确的IP和端口也是如此。 我如何解决它。

  • MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。 如果你还没有 MongoDB 的基本知识,可以参考我们的教程:MongoDB 教程。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mongodb 接下来我们来实现增删改查功能。 创建数据库 要

  • 我正在从事一个Java/vertx项目,其后端是MongoDB(从一段时间以来,我一直使用Elixir/Erlang,我对vertx很陌生,但我认为它最适合)。基本上,我有一个由一些HttpServerVerticles处理的http API,它们需要将数据存储到mongo db(或从中检索数据),并向API调用方发送适当的回复。我正在寻找正确的模式来实现查询和处理回复。 从官方指南和一些教程中,

  • 我尝试了以下方法,但未能达到效果。 1)使用MongoDB源代码配置和mongob脚本错误:代码13:未经授权 2) 使用JSR223采样器(lang:python)错误:javax。剧本ScriptException:ImportError:第6行中没有名为pymongo的模块 代码: 导入随机导入日期时间导入字符串导入syssys.path.append("/usr/lib64/python2

  • 我正在尝试使用MongoDB指南针使用Atlas