首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MongoDB中建模关系?

如何在MongoDB中建模关系?
EN

Stack Overflow用户
提问于 2014-09-08 13:50:34
回答 1查看 235关注 0票数 0

我最近开始在MongoDB学习,我不太清楚我们是如何在系统中的实体之间建立关系的。

因此,由于我习惯于以SQL方式建立这种关系,所以当我将逻辑更改为以NoSQL方式思考时,我会感到有些困惑。

我看到MongoDB必须有类型的建模:嵌入和引用。

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

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

代码语言:javascript
复制
{
   "_id":ObjectId("52ffc33cd85242f436000001"),
   "contact": "987654321",
   "dob": "01-01-1991",
   "name": "Tom Benzamin",
   "address_ids": [
      ObjectId("52ffc4a5d85242602e000000"),
      ObjectId("52ffc4a5d85242602e000001")
   ]
}

以及嵌入的:

  • 只创建一个表,在本例中是用户。
  • 创建一个用户对象,并在其中放置address对象:

代码语言:javascript
复制
{
   "_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"
      }]
}

所以,我的问题是:

要使用NoSQL数据库的最佳特性(如MongoDB ),我必须使用嵌入式建模吗?

在嵌入式建模中,我只创建了一个实体,在这个例子中,address对象中的实体没有ID,因为我没有创建一个表?

EN

回答 1

Stack Overflow用户

发布于 2014-09-08 14:02:57

你跟MongoDB是对的。正如您所说,您有两种方法来存储数据。最好的方法取决于你需要什么。

如果要在其他地方使用address对象,请将其放在另一个表中,如果不使用,则可以将其直接放在对象中。

如果您将MongoDB与NodeJS结合使用,则可以使用MongooseJS。它是一种框架,它具有为mongodb对象定义模式的特殊性。它对嵌入的对象非常有用,因为它为嵌入的每个对象添加了一个objectId。

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

https://stackoverflow.com/questions/25725844

复制
相关文章

相似问题

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