'a nasıl katılırım, grupBy'yi seçin ve bir araya gelmek için üç modelim var: user
, noun
ve usernoun
(0/PHP/Eloquent içinde). user
ve noun
arasında çok fazla ilişki vardır. "Özet" tablosunun ek bir özniteliği score
vardır. Bir kullanıcı kullanıcının toplam puanı almak zorundadır her isim puanları toplamak için anlamlı olan bu sorguyu kullanabilirsiniz:Waterline veya MongoDB
$users = User::leftJoin('noun_user', 'user.id', 'noun_user.user_id')
->groupBy('user.id')
->select('user.*', DB::raw('sum(noun_user.score) as score'))
->orderBy('score', 'desc')
->get();
Ama bu Waterline çalışmak nasıl anlamaya olamaz. Bu çalışır, ancak .populate('user')
satırını rahatsız ettiğimde değil. Doldurulacak user
'a ihtiyacım var. Burada
UserNoun
.find({})
//.populate('user')
.groupBy('user')
.sum('score')
.sort({ score: 'desc' })
.exec((err, usernouns) => {
return res.json(usernouns)
})
olduğunu çalışan bir
.native()
sorgusu:
UserNoun.native(function(err, collection) {
collection.aggregate([
{
$lookup: {
from: 'user',
localField: 'user',
foreignField: '_id',
as: 'user'
}
},
{
$group: { _id: '$user', total: { $sum: '$score' } }
},
{
$sort : { total: -1 }
}
]).toArray(function (err, results) {
return res.json(results)
})
})
Bu yerel sorgu groupBy
ve populate
ve sum
ile Waterline içinde tekrar yazılabilir mi?
Eğer 'için referans bağlantıları paylaşır mısınız groupBy' ve 'sum' yöntemleri? – Sangharsh
Tam belge bulamıyor, ancak sorgusu denedim, yelkenlerde groupby bir hesaplama fonksiyonuyla çalışıyor. Bir bağlantı bulundu - http://stackoverflow.com/questions/20254910/how-do-i-perform-this-query-using-sailsjs-orm-waterline –