Database Reference
In-Depth Information
mongo/reduce_1.js
reduce =
function
(key, values) {
var
total = 0;
for
(
var
i=0; i<values.length; i++) {
total += values[i].count;
}
return
{ count : total };
}
results = db.runCommand({
mapReduce:
'phones'
,
map:
map,
reduce:
reduce,
out:
'phones.report'
})
Da wir den Namen der Collection über den
out
-Parameter festgelegt haben
(
out : 'phones.report'
), können wir das Ergebnis abfragen wie jede ande-
re Collection auch. Wir haben einen View entwickelt, der auch in der
show
tables
-Liste zu finden ist.
> db.phones.report.find({
'
_
id.country'
: 8})
{
"
_
id"
:{
"digits"
:[0,1,2,3,4,5,6],
"country"
:8},
"value"
:{
"count"
:19}
}
{
"
_
id"
:{
"digits"
:[0,1,2,3,5],
"country"
:8},
"value"
:{
"count"
:3}
}
{
"
_
id"
:{
"digits"
:[0,1,2,3,5,6],
"country"
:8},
"value"
:{
"count"
:48}
}
{
"
_
id"
:{
"digits"
:[0,1,2,3,5,6,7],
"country"
:8},
"value"
:{
"count"
:12}
}
has more
Geben Sie
it
ein, um die Iteration über die Ergebnisse fortzusetzen. Beach-
ten Sie, dass die eindeutig emittierten Schlüssel unter dem Feld
_
id
liegen
und dass alle vom Reducer zurückgelieferten Daten unter dem Feld
value
zu
finden sind.
Soll der Mapreducer einfach nur das Ergebnis anstelle der Collection ausge-
ben, können Sie den
out
-Wert auf
{ inline : 1 }
setzen, denken Sie aber
daran, dass die Größe der Ergebnismenge begrenzt ist. Bei Mongo 2.0 liegt
diese Grenze bei 16MB.