У меня есть модель с автором (это mongoose.Schema.ObjectId), и у меня есть поле даты для этой модели (тип Date).
Это работает когда я это делаю, данные возвращаются:
MyModel.find({
author: req.user._id,
started: {
$gte: start,
$lte: end
}
});
Но у меня в схеме есть функция агрегирования, вот как это выглядит:
myModelSchema.statics.getSomeData = function getSomeData(id, start, end) {
const query = [
{ $sort: { started: 1 } },
{
$lookup: {
from: 'projects',
localField: 'project',
foreignField: '_id',
as: 'projectdata'
}
},
{
$lookup: {
from: 'tasks',
localField: 'task',
foreignField: '_id',
as: 'taskdata'
}
}
];
if (start && end) {
query.unshift({
$match: {
$and: [{ started: { $gte: start, $lte: end } }, { author: id }]
}
});
} else {
query.unshift({ $match: { author: id } });
}
return this.aggregate(query);
};
Примечание : часть, в которую я отправляю сопоставление для автора, которая возвращает мне все данные с текущим автором , работает , но часть, в которой я также хочу, чтобы данные возврат в диапазон дат не работает, данные становятся пустыми, когда даты начала и окончания передаются статической функции.
Формат даты, который я передаю функции агрегации: '2018-11-04 06: 00: 00' (строка).