2014-01-23 24 views
0

我想我错过了一些有关CouchDB视图的基本知识。CouchDB视图 - OR和AND运算符

假设我将汽车存储在数据库中。我想要所有蓝色或红色的车,但不是绿色的,他们是本田。但是这个查询是使用密钥动态的。怎么做?

地图功能:

function(car) { 
    emit([car.color, car.make],car); 
} 

我不能找到一种方法,格式键进行这样的可能事情。我还没有结婚这个地图功能,我只是想知道某人会如何处理这样的请求。您是否必须尽可能在沙发上将其缩小,然后使用返回的数据执行更多处理?好像应该有办法做到这一点...

回答

0

一种选择将是包括keys参数与你的查询:

http://localhost:5984/cars/_design/all-cars/_view/by-color-and-make?keys=[["red","honda"],["blue","honda"]]

更可能的是,你有一个搜索页面一堆不同的特征,并且用户正在挑选和选择要搜索的值。他们可能会选择4门,全轮驱动,售价低于10,000。

您将无法使视图满足所有不同的组合。 couchdb-lucene是解决此问题的好选择。

如果你使用cloudant.com,它会自动包含:https://cloudant.com/for-developers/search/

+0

是的,我看到了一些东西指着Lucene的。关于如何启动并运行的任何好文章? git hub页面似乎有点令人费解...... – skinneejoe