gpt4 book ai didi

map - CouchDB View - 多重过滤器

转载 作者:行者123 更新时间:2023-12-04 14:37:26 24 4
gpt4 key购买 nike

我对 couchdb views/map-reduce 有疑问。

比方说,我们有一个包含酒店文件的数据库,如下所示:

[{
_id: "1",
name: "Hotel A",
type: "hotel",
stars: 3,
flags: ["family-friendly","green-hotel","sport"],
hotelType: "premium",
food: ["breakfast","lunch"]
}, {
_id: "2",
name: "Hotel B",
type: "hotel",
stars: 5,
flags: ["family-friendly","pet-friendly"],
hotelType: "budget",
food: ["breakfast","lunch","dinner"]
}]

要查找所有 3 星级的酒店,将适合以下 View :

function(doc) {
emit([doc.stars, doc.name]);
}

如果我使用 startkey=[3],一切都很好。

但是怎么可能用多个过滤器创建一个 View 呢?

例如 - 所有酒店:

  • 有 3 颗星和“family-friendly”和“pet-friendly”的旗帜,并且酒店类型为“预算”?
  • 酒店类型“高级”和食物“早餐”或“午餐”?
  • 等等

有什么想法吗?

编辑:我现在决定使用旧的 mysql。 CouchDB 对我来说是一次很好的体验,但是如果你需要的不仅仅是一个文档的数据,那么问题就太多了:(

最佳答案

您可以发出带有一组值的键:

emit([[doc.stars,doc.hotelType], doc.name]);

问题是,这只有在您可以按重要性对属性进行排序时才有效,因为它们总是会以相同的顺序减少。 Kxepal 使用不同 View 的解决方案可能最适合您的情况。

来源:http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Grouping

关于map - CouchDB View - 多重过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934350/

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