我有一個具有以下結構的檔案。
{
"_id" : ObjectId(""),
"review_id" : "1",
"product_id" : "1",
"date" : 1638869377,
"rating" : 5,
"title" : "lorem",
"review" : "lorem",
"updated_at" : ISODate("2021-12-07T07:10:55.732Z"),
"created_at" : ISODate("2021-12-07T05:04:11.750Z")
}
我設法按月獲得了用戶評論的數量。但我想為每個評級分別獲得它。
例如,在第 10 個月有 7 條評論,我如何才能獲得其中 2 條 1 星、3 條 4 星、2 條 5 星?
{
"$group": {
"_id": {
"month": {
"$month": {
"$toDate": "$date"
}
}
},
"reviews": {
"$sum": 1
}
}
}
uj5u.com熱心網友回復:
您可以在_id欄位內添加要分組的所有內容。只需添加一個帶有評級的新欄位就可以完成這項作業。
{
"$group": {
"_id": {
"month": {
"$month": {
"$toDate": "$date"
}
},
"rating": "$rating"
},
"reviews": {
"$sum": 1
}
}
}
注意:我還會按年添加一個組,這樣您就可以正確地分開每個月。例如,如果您不添加它們,Mongo 會將每年的每個 1 月組合在一起。
操場
uj5u.com熱心網友回復:
您只想$group通過兩個欄位 themonth和 the rating,如下所示:
db.collection.aggregate([
{
"$group": {
"_id": {
"month": {
"$month": {
"$toDate": "$date"
}
},
rating: "$rating"
},
"reviews": {
"$sum": 1
}
}
}
])
蒙戈游樂場
或者我的建議只是為輸出添加更多結構化是使用這個管道。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377428.html
標籤:MongoDB
