在Couchbase / CouchDB中设计文档之间的关系?

TWL

学习如何在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处风景。

建立此类数据关系并检索酒店宾客数据的更干净的方法是什么?

Manokaran K.

假设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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与Couchbase中参考文档的关系

来自分类Dev

与CouchDB和Couchbase混淆

来自分类Dev

在Couchbase中压缩JSON文档

来自分类Dev

在Couchbase中压缩JSON文档

来自分类Dev

在Couchbase中查询“不在”

来自分类Dev

Couchbase-lite和CouchDB

来自分类Dev

Couchbase文档更新非常频繁

来自分类Dev

Couchbase视图返回重复的文档

来自分类Dev

Couchbase文档读取日期/时间

来自分类Dev

如何使用Couchbase中的视图获取文档

来自分类Dev

批量读取Couchbase存储桶中的文档

来自分类Dev

在 Couchbase 中检查文档的过期时间

来自分类Dev

如何使用CAS替换Couchbase文档-CouchBase Node JS 2.0

来自分类Dev

如何使用CAS替换Couchbase文档-CouchBase Node JS 2.0

来自分类Dev

Couchbase-节点之间的连接

来自分类Dev

Couchbase:将视图添加到现有设计文档

来自分类Dev

Couchbase:将视图添加到现有设计文档中

来自分类Dev

克服Couchbase中的查询限制

来自分类Dev

Couchbase中的批量操作失败

来自分类Dev

Couchbase中的版本控制概念

来自分类Dev

Couchbase中的批量操作失败

来自分类Dev

.NET SDK中的Couchbase NodeUnavailableException

来自分类Dev

Designing a relationship between documents in Couchbase/CouchDB?

来自分类Dev

Couchbase-大文档还是小文档?

来自分类Dev

如何删除Couchbase中没有子文档的文档?

来自分类Dev

Couchbase-删除基于TTL的旧文档

来自分类Dev

从Couchbase的视图查询结果返回完整文档

来自分类Dev

Couchbase文档ID要求和限制

来自分类Dev

在Couchbase中联接文档并使用聚合函数