suchen

Heim  >  Fragen und Antworten  >  Hauptteil

In Mongodb werden einige Werte in MapReduce nicht durch Reduce verarbeitet.

Bei Verwendung von MapReduce in Mongodb werden einige Werte nicht durch Reduzieren verarbeitet, was sehr verwirrend ist. Zuerst codieren

    db.test.mapReduce(
        function () {
            emit({
                host: this.host,
                os: this.os,
                computed_on_date: this.computed_on_date,
                uid: this.uid
            }, {data: this.os});
        },
        function (key, value) {
            return {result: 1};
        },
        {
            out: "a"
        }
    )

Die Daten, die ausgegeben werden sollen, sind

        "_id" : {
                "host" : "www.ddc.com",
                "os" : "android",
                "computed_on_date" : "2017-04-19",
                "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a"
        },
        "value" : {
                "result" : 1
        }

Die tatsächlichen Ausgabedaten sind

      "_id" : {
                "host" : "www.ddc.com",
                "os" : "android",
                "computed_on_date" : "2017-04-19",
                "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a"
        },
        "value" : {
                "data" : "android"
        }

Ich bin sehr verwirrt. Wenn der Schlüssel der Bedingung kleiner als 4 ist, wird er normal angezeigt. Wenn er größer als 3 ist oder eine Abfragebedingung hinzugefügt wird, wird keine Reduzierungsverarbeitung durchgeführt.

Eine weitere Frage ist: Wenn mapReduce eine Abfrage hat, sollte es zuerst die Abfrage oder die Reduzierung verarbeiten und dann die Abfrage im Ergebnis verarbeiten

大家讲道理大家讲道理2741 Tage vor606

Antworte allen(1)Ich werde antworten

  • 大家讲道理

    大家讲道理2017-05-17 10:06:04

    建议使用aggregation来做。与MR比较,aggregation是MongoDB的first class的特性。

    供参考。

    Love MongoDB!Have fun!

    Antwort
    0
  • StornierenAntwort