#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