首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >何时在MongoDB中分离文档

何时在MongoDB中分离文档
EN

Stack Overflow用户
提问于 2016-07-23 16:44:12
回答 2查看 172关注 0票数 0

我正在构建一个使用节点和MongoDB的房地产应用程序。我有两个主要的模特

  • 城市
  • 属性

我现在很困惑,因为我不知道是否应该为城市创建一个单独的集合和一个用于房地产的集合。还是我应该把所有的房产都放在城市下面?

我很困惑,因为我认为当应用越来越多的时候,大城市将是巨大的文档,这是一个设计决策应该首先做的。

如果你有处理这种情况的最佳方法,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-23 22:02:41

由于每个物业只有一个城市,这是一对多的关系。在这种情况下,您有许多选择:

首先,记住每个文档的16 MB文档大小限制。那么,“很多”有多大。每个城市有多少房产?

  • 一对几(仅几百):将“少数”(属性)嵌入到“一个”(城市)中。
  • 一对多(不超过几千):子引用。"one"(city)文档中数组中“多”(属性)文档的ObjectID。
  • One-to-Squillions:父母-引用。将“一个”(城市)的ObjectId存储在“多”(属性)文档中。

其次,如果读取与更新的比率很高,可以考虑取消规范化。支付较慢和复杂更新的代价,以获得更有效的查询。

建议的解决方案:只有一个集合(属性)并在其文档中嵌入城市文档。您可能要按city检索属性,不要忘记在city字段上创建索引。

建议员额:

http://blog.mongodb.org/post/87200945828/6-rules-of-thumb-for-mongodb-schema-design-part-1 http://blog.mongodb.org/post/87892923503/6-rules-of-thumb-for-mongodb-schema-design-part-2 http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3

票数 1
EN

Stack Overflow用户

发布于 2016-07-23 21:00:02

我想市中心的坐标不会经常变化。因此,如果城市文档不是很大,而且每次读取属性时都需要有关它们的信息,那么将城市嵌入到属性中是可能的。另一方面,您可以将城市放在单独的集合中,并将其与属性链接。最后,您可以嵌入关于城市的最有用的信息以及指向属性的链接(混合方法)。将一个城市嵌入到属性中会带来一些重复,但可能会提高读取性能。要选择最合适的选项,您需要了解应用程序最常发出的读/写请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38544136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档