Verilerimi güne göre birleştirmeye çalışıyorum, böylece bir grafikte oluşturabilirim. Bunu, $year
, $month
ve $dayOfMonth
tarafından gruplandırılarak başarıyla yapmayı başardım. Bununla birlikte, bu benim tarihimin şimdi son sonuçta üç bölüme ayrıldığı anlamına geliyor. Üç sayıyı bir tarih biçimine geri döndürmenin bir yolu var mı, yoksa tarihe bölünmeyen bir başka şey var mı? Burada
Sentiment.aggregate([
{
$match: { 'content.term' : term_id }
}, {
$group: {
_id: {
year : { $year : '$created_at' },
month : { $month : '$created_at' },
dayOfMonth : { $dayOfMonth : '$created_at' },
},
sum : { $sum : '$score'},
count : { $sum : 1 }
},
}, {
$project: {
_id : 0,
date : '$_id',
sum : 1,
count : 1,
avg : { $divide: ['$sum', '$count'] }
}
}
], function(err, result){
if(err) callback(err);
else callback(null, result);
});
Ve örnek bir sonucudur edilir: Aşağıda sahip olduğumun bir çalışma örneğidir İdeal
[
{
"sum": 201,
"count": 3,
"date": {
"year": 2013,
"month": 7,
"dayOfMonth": 5
},
"avg": 67
},
{
"sum": 186,
"count": 6,
"date": {
"year": 2013,
"month": 7,
"dayOfMonth": 8
},
"avg": 31
},
{
"sum": 834,
"count": 9,
"date": {
"year": 2013,
"month": 7,
"dayOfMonth": 9
},
"avg": 92.66666666666667
}
]
, ben zorunda kalmamak date
geçerli bir tarih olmasını istiyorum daha sonra dönüştürmek için. $concat
kullanmayı denedim, ancak yalnızca dizelerle çalışıyor. Bu fark yaratırsa Mongoose
kullanıyorum. $first
, $last
, $min
veya $max
: Eğer yıl, ay ve gün geçtikçe belgeleri grupluyorsanız olarak, saat ve dakika işe yaramaz, olduğunu varsayarsak
Aradığım şey budur. Teşekkürler! –
Bu neden çalışıyor? –