连接 MongoDB 的最佳实践 [重复]

     2023-03-13     110

关键词:

【中文标题】连接 MongoDB 的最佳实践 [重复]【英文标题】:Best practice for joins MongoDB [duplicate] 【发布时间】:2016-11-30 18:06:11 【问题描述】:

我正在构建一个基本上允许用户管理在线通讯录的应用程序。

我是一名 SQL 专家,习惯于规范化我的 Db。

我正在使用 MEAN 堆栈开发我的第一个应用,我需要帮助了解 MongoDb 的最佳实践。

我知道你可以在 Mongo 中进行连接,但根据我所读到的大多数建议是将所有内容存储到集合中的单个记录中。

就我而言,我有一个用户,他的帐户中可能有超过 1,000 个或更多联系人,每个联系人有超过 100 个字段。

我希望有很多 Mongo 开发经验的人可以插话并告诉我最佳实践是什么。您真的会拥有一份包含一千多个联系人的文档吗?规模如何?

【问题讨论】:

【参考方案1】:

在 NoSQL 中有一个普遍的问题,那就是:嵌入还是拥有一个单独的集合?

我的一般建议是考虑关系:

一对一?嵌入。 从一个到几个?照他们说的做.. 放入内部并避免加入 一对多?一条 MongoDB 记录可以容纳 16MB。所以很难通过。但是如果每条记录都很重,请进行选择查询指定所需的字段...否则查询会很重。 如果你真的不能通过嵌入来做到这一点..你需要单独的集合。而且你不会有真正的加入......你必须做“手动加入”:第一个查询来获取用户..第二个查询来获取他的联系人。但是要小心N+1 query problem(提示:您可以使用in 运算符,或者您可以依靠驱动程序功能来执行我从未尝试过的连接)。

但不要忘记:如果嵌入的实体要在其他地方使用......你不能嵌入,因为你最终会得到重复的数据(原则上)。或者你必须处理它(在某些情况下这不是问题)。

【讨论】:

谢谢路易斯。这对我来说很有意义。

Node.js 上 MongoDB 连接的最佳实践是啥?

】Node.js上MongoDB连接的最佳实践是啥?【英文标题】:What\'sthebestpracticeforMongoDBconnectionsonNode.js?Node.js上MongoDB连接的最佳实践是什么?【发布时间】:2012-08-0118:02:48【问题描述】:这对我来说有点不清楚(我刚刚开始使用Node和Mongo... 查看详情

使用 Promises 时保留变量的最佳实践 [重复]

...下传递时保留变量的最佳做法是什么?通过Promise连接到MongoDB非常简单:connectToMongoDB(data).done(functi 查看详情

mongodb最佳实践经验总结

                    查看详情

在 Mongodb 中存储价格随时间变化的最佳实践

】在Mongodb中存储价格随时间变化的最佳实践【英文标题】:BestpracticetostorepricechangesovertimeinMongodb【发布时间】:2022-01-2100:29:11【问题描述】:我使用Nestjs和Mongoose作为ODM。我有一个名为Product的模型,它具有以下属性:产品型号@S... 查看详情

MongoDB / Mongoose 单元测试 - 最佳实践? [关闭]

】MongoDB/Mongoose单元测试-最佳实践?[关闭]【英文标题】:MongoDB/MongooseUnitTesting-Bestpractice?[closed]【发布时间】:2015-03-2911:10:42【问题描述】:我正在编写一个npm包,通过mongoose将GIS数据导入MongoDB。我已经使用mocha编写了单元测试... 查看详情

PHP单例类的最佳实践[重复]

】PHP单例类的最佳实践[重复]【英文标题】:BestpracticeonPHPsingletonclasses[duplicate]【发布时间】:2012-02-0507:13:47【问题描述】:可能重复:Whoneedssingletons?我总是根据最佳实践写作,但我也想了解为什么给定事物是最佳实践。我在一... 查看详情

处理 InterruptedException 的最佳实践 [重复]

】处理InterruptedException的最佳实践[重复]【英文标题】:BestpracticesforhandlingInterruptedException[duplicate]【发布时间】:2019-03-0810:03:53【问题描述】:在业务场景中,InterruptException发生多次,有的在业务代码执行之前,有的在业务代码... 查看详情

重复 SQL 语句的最佳实践

】重复SQL语句的最佳实践【英文标题】:BestPracticeforRepeatingSQLStatements【发布时间】:2013-05-1017:06:45【问题描述】:我正在寻找一种更好的方法来编写高度重复的sql语句。我知道我可以通过例如使用PHP方法来做到这一点,但我想... 查看详情

调用 WCF 服务的最佳实践 [重复]

】调用WCF服务的最佳实践[重复]【英文标题】:BestpracticetocallWCFService[duplicate]【发布时间】:2014-03-2000:01:51【问题描述】:我一直都知道从不像这样调用WCF服务时使用using语句using(Service.YourClientProxyclient=newService.YourClientProxy())vartim... 查看详情

聊聊kafka:kafka消息重复的场景以及最佳实践(代码片段)

...言上一篇我们讲了聊聊Kafka:Kafka消息丢失的场景以及最佳实践,这一篇我们来说一说Kafka消息重复的场景以及最佳实践。我们下面会从以下两个方面来说一下Kafka消息重复的场景以及最佳实践。生产者重复消息消费者重复... 查看详情

使用最佳实践反应导入模块 [重复]

】使用最佳实践反应导入模块[重复]【英文标题】:ReactImportModulesusingbestpractices[duplicate]【发布时间】:2019-09-0105:24:33【问题描述】:根据您的经验,将大型模块导入组件时的最佳做法是什么。请您从下面的示例中告诉我其中的... 查看详情

放置 Document Ready 功能的最佳实践 [重复]

】放置DocumentReady功能的最佳实践[重复]【英文标题】:BestpracticesforplacingtheDocumentReadyfunction[duplicate]【发布时间】:2016-09-2416:51:07【问题描述】:有时我会在$("document").ready()函数中得到很多代码,这些代码通常位于.html文... 查看详情

记住我功能的最佳实践[重复]

】记住我功能的最佳实践[重复]【英文标题】:Bestpracticeforremembermefeature[duplicate]【发布时间】:2011-04-0116:13:51【问题描述】:我在cookie中使用了2个变量(7天到期),即用户ID和哈希。哈希是用户代理和用户ID的sha1编码。在这种... 查看详情

使用 Node.js 连接到 MongoDB 的最佳方式 [重复]

】使用Node.js连接到MongoDB的最佳方式[重复]【英文标题】:BestwaytoconnecttoMongoDBusingNode.js[duplicate]【发布时间】:2016-11-2322:40:40【问题描述】:我已经阅读了一些关于如何将Mongo与Node一起使用的指南,它们似乎都以不同的方式连接... 查看详情

枚举到int最佳实践[重复]

】枚举到int最佳实践[重复]【英文标题】:Enumtointbestpractice[duplicate]【发布时间】:2013-11-0913:42:01【问题描述】:我无法在两种转换方法之间进行选择。从enum转换为int的最佳做法是什么1:publicstaticintEnumToInt(EnumenumValue)returnConvert.T... 查看详情

Mongodb插入50M文档而不重复的最佳方法

】Mongodb插入50M文档而不重复的最佳方法【英文标题】:Mongodbbestwaytoinsert50Mdocumentswithoutduplicate【发布时间】:2019-12-2212:25:01【问题描述】:我需要创建一个包含超过5000万份文档的数据库。我使用nodejs和运行Ubuntu18.04|的Mongodb服务... 查看详情

JSP/Servlet 环境的最佳实践 [重复]

】JSP/Servlet环境的最佳实践[重复]【英文标题】:BestpracticeforaJSP/ServletEnvironment[duplicate]【发布时间】:2016-10-2606:42:07【问题描述】:好吧,我现在要做的是直接链接到JSP页面(比如说index.jsp),当我想做一个doPost时,我会将它链... 查看详情

指定常量哈希映射时的 Rust 最佳实践 [重复]

】指定常量哈希映射时的Rust最佳实践[重复]【英文标题】:Rustbestpracticeswhenspecifyingaconstanthashmap[duplicate]【发布时间】:2020-06-0200:17:14【问题描述】:我正在尝试在Rust中设置一个常量、预定义的哈希映射。我不确定Rust的最佳实践... 查看详情