Ich spiele mit Map Reduce in MongoDB und Python herum und habe eine seltsame Einschränkung erfahren. Ich versuche nur die Anzahl der "Buch" -Rekorde zu zählen. Es funktioniert, wenn es weniger als 100 Datensätze gibt, aber wenn es über 100 Datensätze geht, wird die Zählung aus irgendeinem Grund zurückgesetzt.
Hier ist mein MR-Code und einige Beispielausgaben:
%Vor%MR-Ausgabe bei einer Aufzeichnungsanzahl von 99:
%Vor%MR-Ausgabe, wenn der Datensatz 101 lautet:
%Vor%Irgendwelche Ideen?
Wenn die ausgegebenen Zahlen gleich oder mehr als 100 sind, werden 100 ausgegeben, um die Funktion zuerst zu reduzieren und zu verarbeiten:
{count: 100}
Dann bleibt nur 1 übrig, gesendet, um die Funktion zu reduzieren und zu verarbeiten:
{count: 1}
OK, das Ergebnis ist jetzt:
[{count: 100}, {count: 1}]
Und dann wird dies die Reduce-Funktion wieder aufrufen (sehr wichtig!). Weil foreach sum+=1
in deinem Code. Es gibt zwei Elemente im Array, das Ergebnis ist 2
.
Hinweis: Ссылка