Я эту схему, MongooseДобавить несколько полей в MapReduce с Мангуста и NodeJS
var SessionSchema = mongoose.Schema({
id: Number,
cure: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Cure'
},
performances: Array,
startDate: Date,
endDate: Date,
validatee: Boolean,
deleted: Boolean
});
мне нужно знать, сколько документов имеют разные идентификаторы, но мне нужно только те, которые имеют startDate
больше заданной даты (например, сегодня). Выполнение следующего кода работает нормально, но я хочу добавить некоторые поля на карте, чтобы использовать их в запросе.
var o = {};
o.map = function() {
emit(this.id, 1
// list other fields like above to select them
)
}
o.reduce = function (k, vals) {
return vals.length
}
o.out = {
replace: 'createdCollectionNameForResults'
};
o.verbose = true;
Session.mapReduce(o, function (err, model, stats) {
console.log('map reduce took %d ms', stats.processtime)
console.log("MapReduce" + JSON.stringify(model));
model.find().exec(function (err, docs) {
console.log(docs);
});
});
Это мой выход:
[ { _id: 0, value: 2 },
{ _id: 1, value: 4 },
{ _id: 2, value: 2 } ]
Я пытаюсь сделать это:
....
o.map = function() {
emit(this.id, {
startDate: this.startDate
})
}
....
model.find({
startDate: {
"$gte": new Date()
}
}).exec(function (err, docs) {
console.log(docs);
});
....
, но я получаю тот же результат.
Как я могу добавить дополнительные параметры ключа из функции отображения в словарь результатов функции сокращения?
Вы пробовали использовать структуру агрегации, а не в MapReduce? – WiredPrairie
Я также не уверен, что 'model' находится в последнем запросе? Коллекция с уменьшением карты будет равна 'value.startDate' – WiredPrairie
К сожалению, я не получаю вас, модель ссылается на' Session schema' – jay