在couchdb数据库上执行以下操作的最佳方法是什么?
select count(distinct("some_field"))
start_date_field>=date1
和end_date_field < date2
;
start_date和end_date&#34;字段&#34;与数据库中的字段不同。
我应该使用清单吗?
答案 0 :(得分:0)
我还没有对此进行测试,但这应该可以满足您的需求:
我假设你的文件看起来像这样:
{
"_id": "41210a75550b2a3d0daf6c1369fbd9e9",
"_rev": "4-d2328d2aa75933bdba905f2d41361b87",
"some_field": "abc12345",
"start_date": "2015-01-02",
"end_date": "2015-01-03"
}
您可以编写一个如下所示的map reduce函数:
function (doc) {
if (doc.start_date && doc.end_date && doc.some_field) {
emit([doc.start_date, doc.end_date, doc.some_field], 1);
}
}
您可以使用以下参数查询map reduce:
inclusive_end=true
start_key=["2015-01-01", "\u0000", "abc12345"]
end_key=["\ufff0", "2015-01-02", "abc12345"]
&lt; - 结束日期减1 reduce=true
group=true
\u0000
和\ufff0
代表一些低和高的unicode值。