学习如何在Couchbase中建立文档之间的关系。也许这个问题以例子更好地问了。
可以说有旅馆和客人。许多酒店和许多客人。
{
"_id": "hotel1"
"type": "hotel"
"name": "Hilton"
...
}
{
"_id": "hotel2"
"type": "hotel"
"name": "Hampton"
...
}
{
"_id" : "guest1"
"type": "guest"
"name": "John"
...
}
{
"_id" : "guest2"
"type": "guest"
"name": "Erin"
...
}
建立关系的一种方法是将客人ID嵌入酒店文档中,但是随着时间的推移,这一点将变得越来越大。
另一种方法是将酒店ID嵌入访客文档中,并为每个酒店创建视图以列出其访客。由于酒店是随着时间的推移而添加的,因此只要创建酒店文档,就需要动态添加这些视图。如果有500家酒店,它们将有500处风景。
建立此类数据关系并检索酒店宾客数据的更干净的方法是什么?
假设Couchbase视图的工作方式与CouchDB视图的工作方式相同。
将酒店ID放入访客文档中。只有一个视图可以为客人访问的每家酒店发出复杂的钥匙。例如
for (var visit in guest.hotels) {
emit([visit.hotel_id, visit.date], guest_id);
}
然后,您可以通过查询视图来获取酒店的客人名单
startkey = ['hotel1'] and endkey = ['hotel1', {}]
您还可以通过以下方式获取特定日期之间的来宾清单:
startkey = ['hotel1', date1] and endkey = ['hotel1', date2]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句