如何在MongoDB中建模关系?

10 浏览
0 Comments

如何在MongoDB中建模关系?

这个问题已经有答案了:

MongoDB关系: 嵌入或引用?

我最近开始学习MongoDB,但我还不太明白如何在系统中建立实体之间的关系。

因此,由于我习惯于按照SQL的方式建立这些关系,所以当我将逻辑转换为NoSQL的方式时,有点困惑。

我发现MongoDB有两种建模方式:嵌入和引用。

如果我理解正确的话,引用就像我们在SQL中所做的:

  • 例如:1对N
  • 创建两个表来表示实体,例如用户和地址。
  • 创建用户对象和地址对象
  • 将Address ID放入用户对象中

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000"),
      ObjectId("52ffc4a5d85242602e000001")
   ]
}

嵌入:

  • 只创建一个表,即User。
  • 创建一个用户对象,并将地址对象放在其中:

{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address": [
      {
         "building": "22 A, Indiana Apt",
         "pincode": 123456,
         "city": "Los Angeles",
         "state": "California"
      },
      {
         "building": "170 A, Acropolis Apt",
         "pincode": 456789,
         "city": "Chicago",
         "state": "Illinois"
      }]
}

所以,我的问题是:

要使用MongoDB等NoSQL数据库的最佳功能,我必须使用嵌入式建模吗?

在嵌入式建模中,我只需要创建一个实体,并且在其中的实体,例如地址对象,在这种情况下不需要ID,因为我没有创建表格吗?

admin 更改状态以发布 2023年5月22日
0
0 Comments

你说得对,使用MongoDB是正确的。你有两种方法来储存数据,最佳的方法取决于你的需求。

如果你的地址对象将在其他地方使用,把它放在另一个表中,如果不是,你可以直接把它放在你的对象中。

如果你正在使用NodeJS与MongoDB,你可以使用MongooseJS。它是一种框架,具有定义你的mongodb对象模式的特性。它在嵌入对象中运行良好,因为它为每个你嵌入的对象添加了一个objectId。

0