我最近开始在MongoDB学习,我不太清楚我们是如何在系统中的实体之间建立关系的。
因此,由于我习惯于以SQL方式建立这种关系,所以当我将逻辑更改为以NoSQL方式思考时,我会感到有些困惑。
我看到MongoDB必须有类型的建模:嵌入和引用。
如果我理解正确,引用就像我们在SQL中所做的那样:
{
"_id":ObjectId("52ffc33cd85242f436000001"),
"contact": "987654321",
"dob": "01-01-1991",
"name": "Tom Benzamin",
"address_ids": [
ObjectId("52ffc4a5d85242602e000000"),
ObjectId("52ffc4a5d85242602e000001")
]
}以及嵌入的:
{
"_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,因为我没有创建一个表?
发布于 2014-09-08 14:02:57
你跟MongoDB是对的。正如您所说,您有两种方法来存储数据。最好的方法取决于你需要什么。
如果要在其他地方使用address对象,请将其放在另一个表中,如果不使用,则可以将其直接放在对象中。
如果您将MongoDB与NodeJS结合使用,则可以使用MongooseJS。它是一种框架,它具有为mongodb对象定义模式的特殊性。它对嵌入的对象非常有用,因为它为嵌入的每个对象添加了一个objectId。
https://stackoverflow.com/questions/25725844
复制相似问题