[英]MongoDB query sort with unique
我有一个保存比赛结果的收藏。
{"person" : "Adam", "time" : 10.01, "compName" : "comp A"}
{"person" : "Bob", "time" : 10.12, "compName" : "comp B"}
{"person" : "Adam", "time" : 9.03, "compName" : "comp C"}
{"person" : "Adam", "time" : 10.99, "compName" : "comp D"}
{"person" : "David", "time" : 10.05, "compName" : "comp D"}
{"person" : "Bob", "time" : 10.78, "compName" : "comp E"}
我正在尝试从该收藏中获得排名。
我尝试做db.results.find({}).sort({"time" : 1})
,但是这给了我相同名称的重复结果。 如何获得每个名字的最佳时间?
您可以使用mongodb 聚合$ min来完成
您的查询将类似于以下内容
db.results.aggregate(
{$group: {_id: '$person', besttime: {$min: "$time"}}}
{$sort: {besttime: 1}}
);
关于流星,我认为这是一个单独的问题,您需要根据问题进行询问。
编辑:
如果您还想将compName
用作聚合值,只需将其添加到$group
哈希中,例如
db.results.aggregate(
{$group: {_id: '$person', "compName": { "$first": "$compName" }, besttime: {$min: "$time"}}},
{$sort: {besttime: 1}}
);
您可以根据需要在下面使用$min
或$max
,
db.results.aggregate(
[
{
$group : {
"_id": "$person",
"time": { "$min": "$time" },
"compName": { $push: "compName" }
}
}
]
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.