正确的MongoDB结构

时间:2019-07-12 04:02:12

标签: node.js database mongodb mongoose structure

我对mongoDB和数据库一般来说还很陌生,我不确定设置不同属性的正确/典型结构是什么。

例如,假设我有一个叫Tim的人,他可以打篮球,足球和网球。您如何说明这一点?您使用布尔值还是存储字符串数组?

这就是我认为的格式。这是正确的思考方式吗?

name: 'Tim',
sports: {
    soccer: true,
    tennis: true,
    basketball: true,
    football: false
}

1 个答案:

答案 0 :(得分:1)

MongoDB中的数据建模与RDBMS的工作方式不同。使用RDBM的典型工作流程是,定义实体及其属性以及它们之间的关系,然后将头撞在墙上,以使“上方左上方和上方”™连接正确,以便数据为您提供所需的答案

一般而言,NoSQL数据库(尤其是MongoDB)的典型工作流程有所不同。您首先确定需要数据回答的问题,然后对数据进行建模,以便以最有效的方式回答这些问题。因此,让我们继续进行下去。

您显然有个人,应该记录他们参加的运动。因此,我们必须问自己的第一个问题是嵌入数据还是引用数据。由于我们不太可能达到16MB的文件限制,因此嵌入似乎是一个不错的选择。现在,与一个持有可想象的所有运动的布尔值的对象一起(后来),不仅要引入不必要的冗长性,而且与持有一系列运动相比,我们将信息值精确地添加为0 :

{
  Name: “Tim“,
  Sports:  [”Soccer”,“Tennis”,”Basketball”]
}

这使得以后更容易引入新的运动(将所述运动附加到一系列运动中),不会污染每个文档并获得不相关的数据,并且保留了相同的信息价值。