大家好! 这个会很短。 这次我将写有关数据建模和我的Side Project的文章。
在此之前,我正在使用Enzo Learns重命名我的学习经历! stereo非常刻板印象,但是的,我暂时想不出什么。
MongoDB数据建模
再次重申,来自SQL / RDBMS背景,构造数据库结构并不是那么容易。 我在数据库中做了一个快速的“现在就做什么,以后再抛光”的风格。 当然,我基于MongoDB文档中的restaurant集合。
这就是我在说的。
{
“ _id”:ObjectID(“ 5a07125885853f5837b4ff80”),
“地址”: {
“ building”:“ 103-05”,
“坐标”:[
-73.8642349,
40.75356
],
“街道”:“ 37大道”,
“邮政编码”:“ 11368”
},
“自治市镇”:“皇后区”,
“ cuisine”:“中文”,
“成绩”:[
{
“日期”:ISODate(“ 2014-04-21T00:00:00.000Z”),
“等级”:“ A”,
“得分”:10
},
{
“日期”:ISODate(“ 2014-04-21T00:00:00.000Z”),
“等级”:“ B”,
“得分”:10
}
],
“名称”:“ Ho Mei Restaurant”,
“ restaurant_id”:“ 40362432”,
“ owner_id”:“ 7ba21412521ca1241”
}
我知道您可以嵌套上面的代码片段中的内容,因此我自己使用在线JSON编辑器进行了尝试。 相当不错的工具。
最初,我不知道这种样式是什么,但是我再次浏览了MongoDB Docs,发现它叫做Embedded Documents 。
我喜欢花哨的字词!
在上面的示例中,该地址密钥将被称为与嵌入式文档的一对一关系。 (从MongoDB文档中逐字取出)
以及等级 与嵌入式文档的关键一对多关系。 以及owner_id (我刚刚添加的,但实际上未包含在原始示例中) 与文档引用的一对多关系。
侧面项目提示
考虑到所有这些,我试图调整我的新数据库架构,这是到目前为止的结果:
用户集合
{
"_id": "5a07125885853f5837b4ff65",
"name": {
"first": "Sherlock",
"last": "Holmes"
},
"email": "greatestdetective@gmail.com",
"username": "7percentsolution",
"password": "a56s8vbef92ascse1346827368asd9a7d96as78f",
"addresses": [
{
"label": "Home",
"coord": [
-73.98241999999999,
40.579505
],
"street": "123 Fake Street",
"city": "Faketon",
"state": "MA",
"zip": "12345"
}
],
"avatar": "http://mdm.miximages.com/Mongodb/cool-image.jpg",
"interests": [
"Shoes",
"Bags",
"Events"
],
"post_votes": {
"upvoted": [
"5a07125885853f5834ff65",
"4bc218972163876687f9f6"
],
"downvoted": [
"7a821987b891526986f666"
]
},
"meta": {
"created_at": "yyyy-mm-dd hh:mm:ss",
"updated_at": "yyyy-mm-dd hh:mm:ss",
"last_login": "yyyy-mm-dd hh:mm:ss"
},
"account_status": "active",
"preferences": {
"language": "English"
}
}
帖子收集
{
"_id": "5a07125885853f5837b4ff65",
"author_id": "7a462c2d555124455",
"title": "Addidas Clearance Sale",
"content": "Up to 50% OFF Addidas items",
"images": [
"http://mdm.miximages.com/Mongodb/image.jpg",
"http://mdm.miximages.com/Mongodb/imag2e.jpg"
],
"start_date": "2017-11-11 00:00:00",
"end_date": "2017-11-11 00:00:00",
"locations": [
{
"name": "Megamall Building A",
"coord": [
-73.8642349,
40.75356
],
"building": "103-05",
"street": "37 Avenue",
"zipcode": "11368"
}
],
"category": "Shoes"
}
知道我到目前为止正在酿造什么吗? 😆
无论如何,这些新想法仍有很多要学习的地方,我计划下次进行研究。 例如,术语“混合模式设计”或“存储桶”(?)在我耳边是新手,而且值得庆幸的是,MongoDB Docs是救生员。 他们也有用例,下周我可能会喜欢的用例!
对于那些正在阅读我的博客的MongoDB专业人员,您可以检查我是否做对了? 😅
这就是所有的时间了,在下一篇博客文章中再见! 如果您走得这么远,感谢您的阅读! 👋❤