我正在使用以下地图功能运行couchDB服务器:
function(doc) {
if (doc.data.appVersion) {
emit([doc.data.appVersion, doc.data.date], doc);
}
}
我可以使用以下内容轻松查询appVersion或一系列appVersion:
开始键:[" 1.2.3",0]结束键:[" 2.0.0",10000000000000]
我还可以在两个日期之间查询appVersion:
开始键:[" 1.2.3",1420066800000]结束键:[" 1.2.3",1422572400000]
我无法做到的是获取所有文档,无论他们的appVersion如何,但在两个日期之间。这不起作用:
开始键:[" 0.0.0",1420066800000]结束键:[" 9.9.9",1422572400000]
该查询还将包含appVersion介于0.0.0和9.9.9之间的所有文档。日期完全被忽略。它就像:
"获取appVersion的所有文档介于0.0.0和9.9.9之间或日期介于1420066800000和1422572400000之间#34;。
但我想要的是:
"获取appVersion的所有文档介于0.0.0和9.9.9之间,日期介于1420066800000和1422572400000之间"
有没有办法让所有三个查询工作?我是否必须更改地图功能?怎么样?或者我是否必须为最后一种查询创建另一个地图函数。我想使用一个地图功能执行此操作,因为我想查询更多属性。
我在客户端使用带有pouchDB的couchDB。
答案 0 :(得分:3)
不幸的是,您确实需要创建一个仅发出doc.data.date
。
另一个提示:没有必要emit(doc.myKey, doc)
。您只需执行emit(doc.myKey)
,然后在{include_docs: true}
时使用query()
。这节省了引擎盖下的空间; this blog post中有详细信息。