mongodb 获取最喜欢帖子的用户

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 网站上获得足够的示例来组合我自己的东西。

谁能给我举一个这样做的例子,或者至少告诉我这是不可能的。=)

Ris*_*shi 6

尝试一下...

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)

请参阅本教程

  • 我不在这里做任何人的工作......这充其量只是一个例子。OP 不会通过这个简单的查询创建一个帝国。该查询不是专有的,不属于我,也不属于您或OP。MongoDB 创建了供所有人使用的查询引擎。此致, (6认同)