MongoDB MapReduce多次使用相同的密钥?

MongoDB MapReduce多次使用相同的密钥?,mongodb,mapreduce,Mongodb,Mapreduce,首先:回答“是”或“否”,并链接到文档即可 在mongo dbs mapreduce中,是否可以为同一个密钥多次调用reduce函数,或者是否可以保证每个密钥调用一次reduce函数 假设我对map函数有以下输入: { id: 1, day: 1, category: 1, value: 5 }, { id: 2, day: 1, category: 2, value: 5 }, { id: 3, day: 2, category: 2, value: 7 }, { id: 4, day:

首先:回答“是”或“否”,并链接到文档即可

在mongo dbs mapreduce中,是否可以为同一个密钥多次调用reduce函数,或者是否可以保证每个密钥调用一次reduce函数

假设我对map函数有以下输入:

{ id: 1, day: 1, category: 1, value: 5 }, 
{ id: 2, day: 1, category: 2, value: 5 }, 
{ id: 3, day: 2, category: 2, value: 7 },
{ id: 4, day: 2, category: 2, value: 7 }
以下关键点:

{ 'day': this.day, 'category': this.category }
并为每个关键点发出以下值:

{ 'value': this.value }

是,可以对同一个键多次调用reduce,除非只有一个结果,在这种情况下,reduce根本不被调用,因为没有任何内容可减少:

是,可以对同一个键多次调用reduce,除非只有一个结果,在这种情况下根本不调用reduce,因为没有要减少的内容:

是,可以为同一个键多次调用reduce,除非只有一个结果,在这种情况下根本不调用reduce,因为没有要减少的内容:

是,可以为同一个键多次调用reduce,除非只有一个结果,在这种情况下根本不调用reduce,因为没有要减少的内容:

或者更准确地说,是或否,以下工作示例:

db.collection.mapReduce(
函数(){
散发(
{“day”:this.day,“category”:this.category},
这就是价值
);
},
功能(键、值){
var=0;
values.forEach(函数(值){
减少的+=值;
});
回报减少;
},
{
“out”:{“inline”:1}
}
)
但当然,在您提供的数据中,作为“键”的数据在每种情况下都会有所不同,实际上并没有调用“reduce”函数。这里发生的事情是,来自“映射器”的值被简单地发送到输出,而不被触摸


只有当同一个键实际上有“多个”值时,才会实际调用“reduce”函数。这就是mapReduce的全部要点。

或者更准确地说,是或否,是一个工作示例:

db.collection.mapReduce(
函数(){
散发(
{“day”:this.day,“category”:this.category},
这就是价值
);
},
功能(键、值){
var=0;
values.forEach(函数(值){
减少的+=值;
});
回报减少;
},
{
“out”:{“inline”:1}
}
)
但当然,在您提供的数据中,作为“键”的数据在每种情况下都会有所不同,实际上并没有调用“reduce”函数。这里发生的事情是,来自“映射器”的值被简单地发送到输出,而不被触摸


只有当同一个键实际上有“多个”值时,才会实际调用“reduce”函数。这就是mapReduce的全部要点。

或者更准确地说,是或否,是一个工作示例:

db.collection.mapReduce(
函数(){
散发(
{“day”:this.day,“category”:this.category},
这就是价值
);
},
功能(键、值){
var=0;
values.forEach(函数(值){
减少的+=值;
});
回报减少;
},
{
“out”:{“inline”:1}
}
)
但当然,在您提供的数据中,作为“键”的数据在每种情况下都会有所不同,实际上并没有调用“reduce”函数。这里发生的事情是,来自“映射器”的值被简单地发送到输出,而不被触摸


只有当同一个键实际上有“多个”值时,才会实际调用“reduce”函数。这就是mapReduce的全部要点。

或者更准确地说,是或否,是一个工作示例:

db.collection.mapReduce(
函数(){
散发(
{“day”:this.day,“category”:this.category},
这就是价值
);
},
功能(键、值){
var=0;
values.forEach(函数(值){
减少的+=值;
});
回报减少;
},
{
“out”:{“inline”:1}
}
)
但当然,在您提供的数据中,作为“键”的数据在每种情况下都会有所不同,实际上并没有调用“reduce”函数。这里发生的事情是,来自“映射器”的值被简单地发送到输出,而不被触摸


只有当同一个键实际上有“多个”值时,才会实际调用“reduce”函数。这就是mapReduce的全部要点。

您当然是对的。我在列表中增加了一个值,以澄清问题的意图。谢谢,你当然是对的。我在列表中增加了一个值,以澄清问题的意图。谢谢,你当然是对的。我在列表中增加了一个值,以澄清问题的意图。谢谢,你当然是对的。我在列表中增加了一个值,以澄清问题的意图。非常感谢。