Couchdb 具有多个键的映射函数
我正在运行具有以下映射功能的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
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”的文档