Я создал код для count сбор данных с использованием группы агрегата, но теперь у меня есть проблема, когда группа счетчиков процессов не может дать правильный результат. Я не знаю, где проблема.Meteor: count by group aggregate
В результате этого кода Result. Существует мой код:
//js
Template.laporankategori.helpers({
profilcount: function() {
var subs = {};
Profil.find().forEach(function(e) {
if (subs[e.kategori] == null)
subs[e.kategori] = 0;
subs[e.kategori] += e.amount;
});
var result = [];
_.each(subs, function(value, key) {
result.push({kategori: key, amount: value});
});
return result;
}
});
//publish
Meteor.publish("profilcount",function(args) {
var sub = this;
var db = MongoInternals.defaultRemoteCollectionDriver().mongo.db;
var pipeline = [
{ "$group": {
"_id": "$kategori",
count:{$sum:amount}
}}
];
db.collection("profil").aggregate(
pipeline,
Meteor.bindEnvironment(
function(err, result) {
_.each(result, function(e) {
sub.added("profil", Random.id(), {
kategori: kategori._id,
amount: kategori.count
});
});
sub.ready();
},
function(error) {
Meteor._debug("Error doing aggregation: " + error);
}
)
);
});
// HTML {{#each profilcount}} <tr> <td>{{kategori}}</td> <td>{{ amount}}</td>
</tr> {{/each}}
Я хочу, чтобы результат, как это. Result
Что является результатом совокупности (самого объекта)? Разве вы не имели в виду 'count: {$ sum: '$ amount'}' на этапе '$ group'? – MasterAM
да, я имею в виду это, но ничего не получается из этого кода. – nurul
Попробуйте немного сломать его и изолировать проблему. Проверьте результаты самого агрегата и убедитесь, что они соответствуют вашим ожиданиям. Затем убедитесь, что клиент получает нужные данные из коллекции, а затем, наконец, убедитесь, что ваша логика представления работает. Прямо сейчас есть несколько мест, где все может пойти не так. – MasterAM