Couchdb 具有多个键的映射函数

Couchdb 具有多个键的映射函数,couchdb,pouchdb,emit,Couchdb,Pouchdb,Emit,我正在运行具有以下映射功能的couchDB服务器: function(doc) { if (doc.data.appVersion) { emit([doc.data.appVersion, doc.data.date], doc); } } 我可以通过以下方式轻松查询appVersion或appVersion范围: 开始键:[“1.2.3”,0]结束键:[“2.0.0”,100000000000

我正在运行具有以下映射功能的couchDB服务器:

function(doc) {
            if (doc.data.appVersion)  {
                emit([doc.data.appVersion, doc.data.date], doc);
            }
        }
我可以通过以下方式轻松查询appVersion或appVersion范围:

开始键:[“1.2.3”,0]结束键:[“2.0.0”,100000000000]

我还可以查询两个日期之间的appVersion:

开始键:[“1.2.3”,1420066800000]结束键:[“1.2.3”,1422572400000]

我不能做的是获取所有文档,而不管它们的应用程序版本如何,但在两个日期之间。这不起作用:

开始键:[“0.0.0”,1420066800000]结束键:[“9.9.9”,1422572400000]

该查询还将包括appVersion介于0.0.0和9.9.9之间的所有文档。日期完全被忽略了。就像:

“获取appVersion介于0.0.0和9.9.9之间或日期介于1420066800000和1422572400000之间的所有文档”

但我想要的是:

“获取appVersion介于0.0.0和9.9.9之间、日期介于1420066800000和1422572400000之间的所有文档”

有没有一种方法可以使所有三个查询都工作?我必须更改地图功能吗?怎么用?或者我必须为最后一种查询创建另一个映射函数。我想用一个映射函数来实现这一点,因为我想查询更多的属性


我在客户端使用couchDB和PockDB。

不幸的是,您确实需要创建一个单独的设计文档,该文档只发出
doc.data.date


另一个提示:无需
发出(doc.myKey,doc)
。您只需执行
emit(doc.myKey)
,然后在
query()时使用
{include\u docs:true}
。这节省了引擎盖下的空间;中有详细信息。

他不必创建单独的设计文档,但他确实需要另一个地图功能。谢谢!我还将获得带有“includes\u docs:true”的文档