我在一个在线商店中有一个针对商品的2000多个评论的数据库,我正在寻找所有写了至少5条评论的用户,并且我想列出他们的姓名,评论数量和评论者ID
我知道我必须使用聚合方法来执行此操作,但是在尝试时我没有运气,因为我还是mongodb的新手
我添加了一张图片,以显示数据库中某些数据的示例
一个进入数据库的示例如下;
{
"_id": ObjectId("5d0b70f2d7367de7f5fa0ee1"),
"SH_reviewerID": "A2G0LNLN79Q6HR",
"SH_asin": "0000031887",
"SH_reviewerName": "aj_18 \"Aj_18\"",
"SH_helpful": [
1,
1
],
"SH_reviewText": "This was a really good",
"SH_overall": 4.0,
"SH_summary": "Really Cute but rather short.",
"SH_unixReviewTime": 1337990400,
"SH_reviewTime": "05 26, 2012"
}
我已经尝试了好几天,但是没有运气,我认为我们需要使用$ match,$ group,$ project
答案 0 :(得分:0)
我想您需要运行此聚合:
db.review.aggregate([
{
$group: {
_id: "$SH_reviewerID",
name: {
$first: "$SH_reviewerName"
},
number: {
$sum: 1
}
}
},
{
$match: {
number: {
$gte: 5
}
}
},
//Optional - Order views descendant
{
$sort: {
number: -1
}
},
//Optional - Change field names
{
$project: {
_id: 0,
SH_reviewerID: "$_id",
SH_reviewerName: "$name",
SH_reviewerViews: "$number"
}
}
])