我有一些问题,看起来像是一个相当直接的问题,在CouchDB 1.01中解决。我的数据基本上是从30个奇怪的诊所中抽出的药物日志以及有关该药物和时间戳的一些基本数据。我传递的对象相当普通组作为地图结果为减少伪形式:CouchDB减少 - 错误只是降序
Key:ClinicName, Value:{"vaccine":DrugType, "stamp":TimeStamp}
我减少功能的目的是让每一个类型的药物的分配量的快速参考。
地图
function(doc) {
if(doc.type=="dose"){
emit(doc.clinicName, {"vaccine":doc.vaccine,"stamp":doc.timestamp});
}
}
减少
function(keys, values){
var indexes = Object.keys(values);
var vCount = new Object;
for (var c in indexes){
var val = values[c]
var vname = val.vaccine
if(vCount.hasOwnProperty(vname)){
vCount[vname] = vCount[vname] + 1;
}
else{
vCount[vname] = 1;
}
}
return vCount;
}
这完美的作品时,我有?关键=特定ClinicName只要降=虚假和组= TRUE。一旦下降到真,我的结果就会在中途切断。
两个问题:
- 为什么要为减少功能结果为了此事?随着减少,结果是相同的向前和向后。
- 我读过的地方,如果你的减少不提供一个标量,你可能做错了。如果抛开奇怪的行为,这是一种糟糕的做法,从日志式数据源呈现这类数据的正确方法是什么?
作为未成年人的风格一点,我发现我减少“防御性”节目让事情使用CouchDB更容易。 CouchDB中的Javascript环境不像浏览器,充满未知脚本可能会改变全局值,原型等。例如:'if(vCount in vCount){' – JasonSmith 2012-04-27 00:53:57
点好了。这是我最初收集时间戳的工件,而不是简单的计数。 – sarwar 2012-04-27 14:38:58