我想要輸出類似於:[{downVotes : 2}, {upvotes :3}, {totalReviews : 7}]
總評論是匹配$match
的評論。有些用戶不投票。貓鼬聚合:字段值和總結果的輸出計數
的評論之一的例子:
{ _id: 584b5d633ac18451ddc4b2c6,
companyName: 'napacabs.com',
shortId: 'B1MrpR_Qe',
updatedAt: Sat Dec 10 2016 16:18:29 GMT-0500 (Eastern Standard Time),
anonId: 584b5d39f371067019df86e9,
myUpdate: Fri Dec 09 2016 20:43:50 GMT-0500 (Eastern Standard Time),
statements: [ [Object], [Object] ],
vote: 'down',
reviewText: 'Another B1MrpR_Qe',
__v: 0,
createdAt: Fri Dec 09 2016 20:41:50 GMT-0500 (Eastern Standard Time),
usefulness: { useful: [], useless: [] },
usefulnessResults: { useful: 0, useless: 0 },
createdString: 'Fr, December 9th 16, 8:41:50 pm',
momented: '20 hours ago',
updatedString: 'Sa, December 10th 16, 4:18:20 pm' }
可能有7條。投票字段值根據用戶如何投票而變化。
我能夠通過投票進行分組,但我不知道如何在不依賴投票值的情況下獲得總評價。
另外我想在語句字段上做一些其他聚合,例如從對象和聚合中獲取值。所以我需要了解如何返回並進行其他聚合步驟,而不是將其全部歸爲更少的元素。
var sendDataToReviewForPage = function(nameOfCompany){
return Review.aggregate([
{$match : {companyName : nameOfCompany}},
// {$unwind : "$createdString"},
{$group : {_id : "$vote", type : {$push : "$vote"}}},
{$project : {size : { $size : "$type" }}}
]);
};
我知道上面的代碼不產生我想要的結果,但我得到了投票類型的分離我有類似[ { _id: 'down', size: 1 }, { _id: 'up', size: 1 } ]
請幫我最終想要的格式。
我看你怎麼做,但我的數據沒有評論欄。所以我想知道是否有不同的方式。 –
我剛剛在我的數據中添加了review field,但在totalReviews **中需要哪些字段。 –
@jackblank如果你想通過字段'reviewText'的存在來計算,你可以這樣做''reviewCount':{「$ sum」:{「$ cond」:[{「$ ifNull」:[「$ reviewText」, }},1,0]}' – RaR