加入MongoDB的最佳实践

时间:2016-07-26 22:34:38

标签: mongodb mongodb-query mean-stack

我正在构建一个基本上允许用户管理在线地址簿的应用程序。

我是一个SQL人,习惯于规范我的Db。

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

我意识到你可以在Mongo中加入,但是从我读过的内容中,大多数建议是将所有内容存储到集合中的单个记录中。

在我的情况下,我有一个用户,他们的帐户中可能有超过1,000个或更多联系人,每个超过100个字段。

我希望有很多Mongo开发人员可以加入并告诉我最佳做法是什么。你真的有一个有超过一千个联系人的文件吗?这是如何扩展的?

1 个答案:

答案 0 :(得分:2)

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

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

  • 一对一?嵌入。
  • 一到少?按照他们告诉你的方式......放入内部并避免加入
  • 一对多? MongoDB记录可以容纳16MB。你通过它很难。但是如果每条记录很重,请选择指定所需字段的查询...否则查询会很重。
  • 如果你真的不能通过嵌入来实现它......你需要单独的收藏。并且你不会有真正的联接......你必须做"手动加入":第一个查询来获取用户..第二个查询来获取他的联系人。但请注意N+1 query problem(提示:您可以使用in运算符,或者您可以依靠驱动程序功能来执行我从未尝试过的连接。

但请不要忘记:如果要在其他地方使用嵌入式实体......当您最终获得重复数据时(原则上),您无法嵌入。或者你必须处理(在某些情况下它不是问题)。