mongodb - 有没有办法为此查询使用聚合管道方法
问题描述
我有一个包含超过 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
解决方案
我猜你需要运行这个聚合:
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"
}
}
])
推荐阅读
- java - Activity 未在 AndroidManifest.xml 中声明,即使它是
- php - 按价格或费率排序
- javascript - 即使 PC 关闭,如何跟踪用户在网站上的活跃 YT 播放器?
- .net - 当 IsEnabled=False 和 IsEditable = False 时 WPF 组合框选定项文本未灰显
- android - 当我的应用程序处于“应用程序待机模式”时,FCM 不起作用
- c - 使用 & 运算符在 c 中进行位操作
- ios - 区别需要MainQueueSetup 和dispatch_get_main_queue?
- java - java.lang.ClassNotFoundException:模型。数据库(表)
- angularjs - angularjs中路由更改后如何重新加载ng-include
- sbt - ScalaJS 插件 0.6.23:“值 %%% 不是字符串的成员”