json - 地理数据的 CouchDB 最佳文档模型
问题描述
开始构建一个显示城市中多个地点的 web 应用程序。但在此之前尝试在 CouchDB 中构建良好的数据库建模基础。
所以,每个城市都是一个文件,在城里有不同的地方。电子邮件,是发送/添加地点的人。评论是为了在这个地方提供额外的信息。尝试分层工作。
下一步是在传单地图上显示所有地点并按“城市”过滤。
- city
- place 1
- place 2
- ...
- place x
这是我的文档模型:
{
"_id": "52888cacec450d22e4baa0c1754cb777",
"_rev": "2-c916a9d3ce0a86a775dd232996c0f865",
"zip": "8660",
"city": "Adinkerke",
"province": "West-Vlaanderen",
"lng": 2.5896028375712,
"lat": 51.06926315,
"comments": "",
"locations": [
{
"places": "1",
"lat": "51.074319",
"lng": "2.599509",
"street": "Kerkweg",
"comments": "",
"email": "c***@gmail.com",
"published": "27/12/2019"
},
{
"places": "1",
"lat": "51.075027",
"lng": " 2.602127",
"street": "Dorpstraat",
"comments": "Parking Dorpstraat/Kerkweg",
"email": "c***@gmail.com",
"published": "27/12/2019"
}
]
}
一些建议,是否可以更好?
解决方案
相反,将您的模型翻转过来——让每个位置都是一个单独的文档,其中包含一个“城市”字段,然后使用以“城市”为关键字的地图来获取城市中的所有位置。这样,您可以降低更新冲突的风险,以及随着应用程序扩展而不断增长的文档。
function(doc) {
if (doc && doc.city) {
emit(doc.city, null);
}
}
一般建议是:小型文档,不可变模型。请参阅https://blog.cloudant.com/2019/11/21/Best-and-Worst-Practices.html
推荐阅读
- hadoop - hadoop3 找不到 .nm-local-dir.usercache.hadoop.appcache。做 pi 测试时
- android - Android:应用服务器上的 GCM 推送通知错误“SENDER_ID_MISMATCH”
- postgresql-9.3 - 在 postgresql 中使用 group by 和 count 查询
- ssrs-2008 - SSRS - 如何对 LookUpSet 表达式求和
- python - 熊猫:以每小时的频率正确重新采样数据
- php - AWS S3 仅允许存储桶中的图像显示在特定 IP 地址上
- sharedpreferences - Flutter Shared Preferences 保存值,不显示
- php - 我的服务器上出现的这个 PHP 文件是什么?
- angular - 无法在 Angular 6 中使用 ngFor 显示 agm 标记列表
- android - Android Studio 和 Gradle - 关于 testCompile、testImplementation、testApi 的看似误导性的警告