jus*_*ser 1 mongodb node.js express
如果我有一个包含看起来或多或少像这样的文档的集合:
{
"_id": "52c06c86b78a091f26000001",
"desc": "Something somethingson",
"likes": [
{
"user_id": "52add4f4344e8ca867000001",
"username": "asd",
"created": 1390652212592
},
{
"user_id": "52add4f4344e8ca867000001",
"username": "asd",
"created": 1390652212592
}
],
"user_id": "52add4f4344e8ca867000001",
"username":"username"
}
Run Code Online (Sandbox Code Playgroud)
我可以使用 mongodb (使用 Nodejs 和 Express)获得 10 个最喜欢帖子的用户列表吗?
我认为应该可以通过“user_id”对所有帖子进行分组,然后计算“likes”数组中的项目总数来执行此 Map-Reduce 或聚合。然后从中获取前 10 个“user_id”。
我猜这是可能的。唯一的问题是我没有从 mongo 网站上获得足够的示例来组合我自己的东西。
谁能给我举一个这样做的例子,或者至少告诉我这是不可能的。=)
尝试一下...
db.collection.aggregate([
{$unwind: "$likes"},
{$group: {_id: "$user_id", likesCount: {$sum: 1}}},
{$sort: {likesCount: -1}},
{$limit: 10},
{$project: {_id: 1}}
])
Run Code Online (Sandbox Code Playgroud)
请参阅本教程。
| 归档时间: |
|
| 查看次数: |
1913 次 |
| 最近记录: |