【问题标题】:How to improve my MongoDB structure? [closed]如何改进我的 MongoDB 结构? [关闭]
【发布时间】:2015-07-29 20:37:57
【问题描述】:

问题

我正在使用 mongoose 的 Schema 创建一个 MongoDB 结构。

网站的目的是存储与组件相关的教程(文章)。 组件属于一个类别并且来自一个或多个供应商。我来自 SQL 数据库,所以我不确定我为这个 NoSQL 数据库所做的结构..

是否有缺少信息?结构是否正确

实际结构

文章

* title : String
* [ components : Component ]
* abstract : String (160- chars)
* content : String (markdown)
* [ langages : Langages ]
* created : Date
* [ files : 
  - path : String 
  - description : String ]
* by : User
* [ edited : User ] 

供应商

* name : String
* serial : String (10- chars)
* country : Country
* adress : String
* city : String
* score : Number
* [ components : 
  - component : Component
  - price : Number ]

国家应该存储吗?

* name : String (China)
* serial : String (ZH)
* [ suppliers : Supplier ]

组件

* name : String (ex : Bluetooth slave)
* reference : String (ex : HC-06 )
* [ suppliers : Supplier ]
* [ categories : Category ]
* [ images : String ]

类别

* name : String
* description : String
* [ component : Component ]

【问题讨论】:

    标签: javascript node.js mongodb mongoose database


    【解决方案1】:

    MongoDB 是一个文档数据库,非常灵活,您可以选择任何方式来构建文档!这会感觉和 SQL 做事的方式很不一样。

    根据您的问题,没有“正确”之分,如果您拥有从一份文件到另一份文件的 ID,则该信息也是“完整的”。 SQL 和 Not-SQL DB 的汽车示例是 SQL 就像自动变速器,可以为您做很多事情,而 NoSQL 是手动变速器。您可以获得更高的性能,但您也必须对其进行更多调整。

    你们有一对一的关系吗?如果是,只需将它们制作成相同的文档。

    如果您总是以相同的方式拉动一棵树(组件 + 类别 + 供应商),也许只需将其设为一个文档!易于阅读,更多的更新工作。从您的示例中,只需嵌入类别和国家 - 它们本质上只是字符串。

    如果数据加倍有助于获得高性能读取和更简化的结构,请不要害怕。无论如何,您可能会阅读很多而不是写作。您将创建/更新一些东西(文章)很多,而不是更新供应商、类别等。

    您会尝试更多的事情,而且您的数据可能会经常更改。这被视为 NoSQL DB 的优势!您不需要管理模式,旧文档将没有可用的新字段。 (当然,如果您希望所有旧数据都表示新字段,则需要进行大量更新!)

    最后一点,如果您愿意重组所有数据,只需使用 SQL,因为您已经了解它,并选择一个不错的 ORM,例如 BookshelfSequelize,或者只是通过 @987654323 进行一些查询访问@。让您的数据访问为您服务!文档存储有可能不适合您的应用程序,如果您希望完成某些事情(而不是了解 Mongo),那么仅使用 SQL 会取得更大的成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多