我有三個模型:user
,noun
,和usernoun
(user_noun
在PHP/Eloquent)。 user
和noun
之間有多對多的關係。 「數據透視表」有一個額外的屬性score
。我可以用這個查詢與雄辯,總結每個名詞的分數用戶必須得到用戶的總比分:如何選擇,groupBy,並加入水線或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();
但我無法弄清楚如何得到這個在水線工作。這有效,但不是當我取消註釋.populate('user')
行時。我需要填寫user
。
UserNoun
.find({})
//.populate('user')
.groupBy('user')
.sum('score')
.sort({ score: 'desc' })
.exec((err, usernouns) => {
return res.json(usernouns)
})
這裏是一個.native()
查詢工作:
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)
})
})
可以這樣本地查詢在水線被改寫爲groupBy
和populate
和sum
?
能否請您分享引用鏈接的' groupBy'和'sum'方法? – Sangharsh
無法找到確切的文檔,但我試過查詢,在sails groupby與計算功能。找到一個鏈接 - http://stackoverflow.com/questions/20254910/how-do-i-perform-this-query-using-sailsjs-orm-waterline –