Как переписать MapReduce с использованием aggregate или любой другой альтернативы

#node.js #mongodb #mapreduce #aws-documentdb #aws-documentdb-mongoapi

#node.js #mongodb #mapreduce #aws-documentdb #aws-documentdb-mongoapi

Вопрос:

Привет, я сталкиваюсь с трудностями при переписывании MapReduce, поскольку он не поддерживается в aws documentdb, любое обходное решение будет оценено

 var historyMap = function () {
            var values = {
                updateType: this.updateType.name   '(v.'   this.version   ')',
                version: this.version,
                revisionTimestamp: this.revisionTimestamp,
                entityId: this.entityId
            };
            emit(this.entityId, values);
        };
        var scenarioMap = function () {
            emit(this._id, {friendlyId: this.friendlyId});
        };
        var reduce = function (key, values) {
            var updateTypes = '';
            var friendlyId = '';
            if (values[0].revisionTimestamp !== 'undefined') {
                var revisionTimestamp = values[values.length - 1].revisionTimestamp;
            }
            values.forEach(function (value) {
                if (value.updateType) {
                    updateTypes  = value.updateType   ',';
                }
                if (value.friendlyId) {
                    friendlyId = value.friendlyId;
                }
            });
            return {updateType: updateTypes, entityId: key, friendlyId: friendlyId, revisionTimestamp: revisionTimestamp};
        };

HistoryReport.find({}).remove().exec().then(function () {
        History.mapReduce({
            map: historyMap,
            reduce: reduce,
            query: {type: 'Scenario', revisionTimestamp: {$gte: startDate, $lt: endDate}},
            out: {'reduce': historyReportCollectionName},
            sort: {revisionTimestamp: -1}
        }, function () {
            Scenario.mapReduce({
                map: scenarioMap,
                reduce: reduce,
                out: {'reduce': historyReportCollectionName}
            }, function () {
                HistoryReport.find({'value.updateType': {'$exists': true}}).exec().then(function (data) {
                    populateSheet(data);
                });
            });
        });
    }).then(null, function (err) {
        next(new errorHandler.error.ProcessingError(errorHandler.getErrorMessage(err)));
    });
 

Я получаю следующую ошибку MongoError {имя: «MongoError», сообщение: «Функция не поддерживается: mapreduce», ok: 0, errmsg: «Функция не поддерживается: mapreduce», код: 303, …}код: 303errmsg: «Функция не поддерживается: mapreduce»сообщение: «Функция не поддерживаетсяподдерживается: mapreduce»имя: «MongoError»ok: 0