NoSQL数据建模关于"一对多"关系

时间:2016-12-20 13:29:41

标签: mongodb database-design database nosql

晚上好,

我正在尝试使用MongoDB作为后端开发一个小型数据模型。这是我第一次使用NoSQL数据库和数据模型进行开发。

最大的想法是:可以完成一系列服务,每个服务都可以在不同的地方使用。举个例子,让我们想一个显示吃饭地点的网站(服务),你可以在多个地方做到这一点,所以有许多地方的服务(EAT)(地点)。

我不知道如何对此进行建模,任何想法?

SERVICE {
_id: ObjectId,
Name: String,
Code: String
} // Data model for the Service Collection?

PLACES {
_id: ObjectId,
NameOfPlace: String,
Service1: String,
Service2: String,
...
Servicen: String
} /* This way, by using the flexibility of MongoDB, 
updating the document each time with some new (key, value).
Doesnt seem elegant nor efficient.*/

PLACES {
_id: ObjectId,
NameOfPlace: String,
Services: {
           NameOfService1: refID SERVICE COLLECTION,
           NameOfService2: refID SERVICE COLLECTION..
          }
} // Maybe this way is better? No idea how to do those tho'

您可以向我解释的更好的解决方案吗?谢谢大家!

2 个答案:

答案 0 :(得分:2)

您应该考虑使用引用对它们进行建模。基本上,Place有一系列Serivce的Ids

SERVICE {
_id: ObjectId,
Name: String,
Code: String
}

PLACES {
_id: ObjectId,
NameOfPlace: String,
Services: [Service1_id, Service2_id, ...]

}

您可以阅读以下链接了解实施细节

MongoDB - Data Modeling introduction

MongoDB - Model One-to-many relationship with reference

答案 1 :(得分:0)

理想情况下,它应该作为嵌套的子文档或一组场所存储在一个集合中。 NoSql应该用于嵌套数据对象/数组的这种要求,而不是传统的RDBMS关系。