gpt4 book ai didi

node.js - 如何获取 mongodb 中不同元素的最大值?

转载 作者:可可西里 更新时间:2023-11-01 10:45:16 29 4
gpt4 key购买 nike

我的收藏中有记录

{
"_id" : ObjectId("5c37a71c54956d08afb590ef"),
"user_id" : 45,
"result" : 9,
}

{
"_id" : ObjectId("5c37a7ad54956d08afb590f0"),
"user_id" : 1,
"result" : 3,
}

{
"_id" : ObjectId("5c37a80254956d08afb590f1"),
"user_id" : 45,
"result" : 10,
}

如何为每个用户获取具有最大值(结果)的不同记录(user_id 字段是唯一的)?我期望这样的结果:

{
"_id" : ObjectId("5c37a80254956d08afb590f1"),
"user_id" : 45, //distinct user_id
"result" : 10, //max result for user
}

{
"_id" : ObjectId("5c37a7ad54956d08afb590f0"),
"user_id" : 1, //distinct user_id
"result" : 3, //max result for user
}

最佳答案

您可以使用以下聚合:

db.col.aggregate([
{
$sort: { result: -1 }
},
{
$group: {
_id: "$user_id",
result: { $first: "$result" },
o_id: { $first: "$_id" }
}
},
{
$project: {
_id: "$o_id",
user_id: "$_id",
result: 1
}
}
])

您需要使用 $sort首先能够使用 $group 从最高的 result 文档中捕获 _idresult$first 运算符。输出:

{ "result" : 3, "_id" : ObjectId("5c37a7ad54956d08afb590f0"), "user_id" : 1 }
{ "result" : 10, "_id" : ObjectId("5c37a80254956d08afb590f1"), "user_id" : 45 }

关于node.js - 如何获取 mongodb 中不同元素的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54136648/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com