У меня проблемы с запросом заполнителя мангуста.Mongoose aggregate возвращает пустой результат
Это своего рода вождение меня с ума, потому что я не могу найти решение нигде. Я был бы очень благодарен за любую поддержку.
Схема:
var EvalSchema = new Schema({
modified: {type: Date, default: Date.now},
created : {type: Date, default: Date.now},
username: {type: String, required: true},
item: {type: String, required: true},
criteria: [
{
description: {type: String},
eval: {type: Number}
}
]});mongoose.model('Eval', EvalSchema);
, и я использую агрегацию для вычисления суммы оценок по каждому критерию для данного элемента.
Eval.aggregate(
[
{ $match: { item: item.id}},
{ $unwind : "$criteria" },
{
$group: {
_id: "$criteria.description",
total: { $sum: "$criteria.eval" },
count: { $sum: 1 }
}
},
{$project: {total:1, count:1, value: { $divide: [ "$total", "$count" ]}}}
], function (err, result) {
if (err) {
console.log(err);
}
console.log(result);
});
Результат всегда пустой ....
Я фиксируя все запросы, которые Mongoose огня в приложении. Когда я запускаю запрос в Mongodb, он возвращает правильный результат.
coll.aggregate([ { '$match': { item: 'kkkkkkkkkkk' } }, { '$unwind': '$criteria' }, { '$group': { _id: '$criteria.description', total: { '$sum': '$criteria.eval' }, count: { '$sum': 1 } } }, { '$project': { total: 1, count: 1, value: { '$divide': [ '$total', '$count' ] } } } ])
Результат:
{
"result" : [
{
"_id" : "Overall satisfaction",
"total" : 4,
"count" : 1,
"value" : 4
},
{
"_id" : "service",
"total" : 3,
"count" : 1,
"value" : 3
},
{
"_id" : "Quality",
"total" : 2,
"count" : 1,
"value" : 2
},
{
"_id" : "Price",
"total" : 1,
"count" : 1,
"value" : 1
}
],
"ok" : 1
}
модель ссылается на правильную коллекцию.
Спасибо :)
Вы проверили значение, исходящее от 'item.id'? – chridam
Да, да. Он содержит правильное значение. :( – yosrO
Проверьте тип item.id. Может быть, это не строка. – ZeMoon