gpt4 book ai didi

javascript - 如何改进我的 MongoDB 结构?

转载 作者:行者123 更新时间:2023-12-03 10:07:17 24 4
gpt4 key购买 nike

问题

我正在使用 mongoose 的架构创建 MongoDB 结构。

网站的目的是存储与组件相关的教程(文章)。一个组件属于一个类别并且来自一个或多个 vendor 。我来自 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 ]

vendor

* 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 ]

最佳答案

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

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

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

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

如果数据加倍可以帮助您获得高性能读取和更简单的结构,请不要害怕。无论如何,你阅读的内容可能会比你写的内容多很多。而且您创建/更新某些内容(文章)的次数将比更新 vendor 、类别等的次数

您将尝试更多的事情,并且您的数据可能会经常更改。这也算是NoSQL数据库的强项吧!您不需要管理架构,并且旧文档不会有可用的新字段。 (当然,如果您希望所有旧数据都包含新字段,则需要进行大量更新!)

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

关于javascript - 如何改进我的 MongoDB 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30301543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com