【发布时间】:2021-01-02 21:53:30
【问题描述】:
在 MongoDB 中文档以这种格式保存。 我想以这样一种方式提取数据,即 userId 具有最高 Rank 的最大总点数。我是 MongoDB 的新手。请帮助我如何使用查询。
此数据保存在 MongoDB 中。
[{
_id:"33fa7277-d882-4add-9985-e92c3e48c15b",
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06141",
points_total:280
},
{
_id:"33fa7277-d882-4add-9985-e92c3e48c25b",
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06142",
points_total:200
},
{
_id:"33fa7277-d882-4add-9985-e92c3e48c35b",
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06141",
points_total:20
},
{
_id:"33fa7277-d882-4add-9985-e92c3e48c45b",
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06144",
points_total:150
}]
我试过这个查询,但没有用。
db.users.aggregate([
{ "$sort": {"points_total" : -1}},
{ "$group": {
"_id": "$user_id",
"points_total":{"$sum": "$points_total"},
"items": { "$push": "$$ROOT" }
}},
{ "$unwind": { "path": "$items", "includeArrayIndex": "items.rank" } },
{ "$replaceRoot": { "newRoot": "$items" } },
{ "$sort": { "points_total" : -1} }
])
预期输出
[{
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06141",
points_total:300,
rank:1
},
{
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06142",
points_total:200,
rank:2
},
{
user_id:"a86302a0-2b5b-4392-95c6-6b41a4d06144",
points_total:150,
rank:3
}]
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query aggregation-framework