Couchbase附加过滤器

Couchbase附加过滤器,couchbase,Couchbase,我对couchbase设计有这样的问题:查询视图返回40000条记录。我需要添加额外的过滤器对他们和获得前100名的订单 我在我的应用程序代码中进行了这样的过滤/排序,这意味着我必须从Couchbase获取40000条记录,这非常耗时。有没有一种方法可以在couchbase节点上执行筛选/排序,而无需将整个4000条记录提取到appserver 我的数据是旅游旅行 { "OT": "tour", "dd": 20140720, "city": 1206, "hotel":

我对couchbase设计有这样的问题:查询视图返回40000条记录。我需要添加额外的过滤器对他们和获得前100名的订单

我在我的应用程序代码中进行了这样的过滤/排序,这意味着我必须从Couchbase获取40000条记录,这非常耗时。有没有一种方法可以在couchbase节点上执行筛选/排序,而无需将整个4000条记录提取到appserver

我的数据是旅游旅行

{
   "OT": "tour",
   "dd": 20140720,
   "city": 1206,
   "hotel": 9656,
   "stars": 2,
   "resort": 23415,
   "country": 34,
   "price": 24139,
   "priceType": 1,
   "tickets": "QQYY",
   "nights": 5,
   "food": 4,
   "oper": 18,
   "adult": 1,
   "ch": 0,
   "ch1": 0,
   "ch2": 0,
   "ch3": 0,
   "avail": 1,
   "stop": "Q"
}
我需要选择从伦敦到土耳其最便宜的十大旅行团,时间为20140622年到20140710年,地点为四星级或五星级酒店

我的观点是:

function (doc, meta) {
  if(meta.type==='json' && doc.OT==='tour'){
    emit(["A",doc.country,doc.city,doc.adult,doc.ch,doc.priceType,doc.dd,doc.price]);
    emit(["R" + doc.resort,doc.country,doc.city,doc.adult,doc.ch,doc.priceType,doc.dd,doc.price]);
  }
}
度假村+国家/地区+出发城市+成人人数+儿童人数+价格类型+出发日期允许我从3000000+中选择约40000条记录作为出发日期范围,但有时根据用户输入,我仍需要按4,5中的星星进行筛选。另外,视图排序是按日期,价格这是不适用的,例如我得到的

20140101 110$ <- top but not cheapest
20140101 120$
20140102 100$ <- cheapest but not top
20140102 105$
在另一边,有时我还需要买N个最便宜的旅行团,出发日期在x和Y之间,价格在A和Z之间。 所有这些场景都需要额外的过滤器从巨大的数据集中过滤出来,即使是上面所示的高选择性视图,在我的情况下仍然会生成巨大的数据集,我不希望将整个数据集提取到客户端AppServer进行这样的处理。。。我意识到Couchbase节点上的处理将消耗更多的CPU,但我更喜欢将更多Couchbase节点添加到集群中。。。 不管怎么说,有人需要做这种过滤工作,我相信在没有额外网络开销的情况下,在实际放置数据的地方进行过滤更为理想…

Dimzon

可以使用降序参数根据视图发出的键的值进行排序。还有一个limit参数,它将限制每个查询获得的响应数量

安侬,
Andrew

将当前视图代码添加到问题中。这不适用: