Couchdb rereduce 的理解与总结
我不知道这是否真的减少了,但这就是我来这里的原因。
我有这个:
“非洲人”ID:f6733302df85ac109397f4b6030005bf [1, 2]
“非洲人”ID:f6733302df85ac109397f4b6030006d1 [1, 3]
“非洲人”ID: f6733302df85ac109397f4b6030012b6 [2, 4]
"中文" ID: f6733302df85ac109397f4b6030012eb 1
"中文" ID: f6733302df85ac109397f4b603001d87 1
我知道如何如果该值不是数组,则计算总和(例如 中国人)。但我无法设法将数组中的值和它相加 结果是:“afrikan”“02,41,31,2”
还有一个问题:是否有一种方法可以将所有值相加 钥匙?
查看代码:
function(doc) {
if(doc.food) {
emit(doc.food, doc.type);
}
}
减少代码:
function(keys,values,rereduce)
{
return sum(values);
}
非常感谢:)
更新:
我找到了 Couchdb 的答案。
这是代码:
function(doc) {
if(doc.food) {
if(doc.type.length>1) {
doc.type.forEach(function(tag) {
emit(doc.food,tag);
});
}else {
emit(doc.food,doc.type);
}
}
}
减少:
function(keys,values) {
return sum(values);
}
I don't know if this is really rereduce but that's why I'm here.
I have this:
"afrikan" ID: f6733302df85ac109397f4b6030005bf [1, 2]
"afrikan" ID: f6733302df85ac109397f4b6030006d1 [1, 3]
"afrikan" ID: f6733302df85ac109397f4b6030012b6 [2, 4]
"chinese" ID: f6733302df85ac109397f4b6030012eb 1
"chinese" ID: f6733302df85ac109397f4b603001d87 1
I know how to calculate the sum if the value wasn't an array (like in
chinese). But I can't manage to sum the values in the array and it
results in this: "afrikan" "02,41,31,2"
And one more question: is there a way to sum all the values regardless
of keys?
View code:
function(doc) {
if(doc.food) {
emit(doc.food, doc.type);
}
}
Reduce code:
function(keys,values,rereduce)
{
return sum(values);
}
Thank you a lot :)
UPDATE:
I found an answer for Couchdb.
Here is the code:
function(doc) {
if(doc.food) {
if(doc.type.length>1) {
doc.type.forEach(function(tag) {
emit(doc.food,tag);
});
}else {
emit(doc.food,doc.type);
}
}
}
Reduce:
function(keys,values) {
return sum(values);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你得到“02,41,31,2”的原因是因为Javascript会将数字+数组转换为字符串。这很奇怪,但却是事实。
我认为你不需要担心重新减少。只需将每个值加在一起即可。如果是数组,则将数组中的所有值相加。
The reason you get "02,41,31,2" is because Javascript will convert a number + an array into a string. It is very strange, but true.
I think you do not need to worry about rereduce. Just add every value together. If it is an array, add all the values in the array.