gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:27:00 24 4
gpt4 key购买 nike

学习如何在 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,并为每家酒店创建 View 以列出其宾客。由于酒店会随着时间的推移而添加,因此无论何时创建酒店文档,都需要动态添加这些 View 。如果有 500 家酒店,它们将是 500 次浏览。

为此类数据建立关系并检索酒店客人数据的更简洁方法是什么?

最佳答案

我假设 Couchbase View 的工作方式与 CouchDB View 相同。

将酒店 ID 放在客人文档中。只有一个 View 为客人访问的每家酒店发出一个复杂的 key 。例如

for (var visit in guest.hotels) {
emit([visit.hotel_id, visit.date], guest_id);
}

然后您可以通过使用

查询 View 来获取酒店的客人列表
startkey = ['hotel1'] and endkey = ['hotel1', {}]

您还可以获得特定日期之间的客人列表:

startkey = ['hotel1', date1] and endkey = ['hotel1', date2]

关于couchdb - 在 Couchbase/CouchDB 中设计文档之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27045490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com