gpt4 book ai didi

MongoDB 聚合 : How to query a limited amount of "top" documents per group?

转载 作者:可可西里 更新时间:2023-11-01 10:44:04 24 4
gpt4 key购买 nike

假设我有一个包含员工文档的 MongoDB 集合:

{
name : "John Doe",
department : "Finance",
salary : 100
}

如何查询每个部门薪资最高的X名员工?

编辑

为了让自己更清楚一点,我是这样想的:

db.collection.aggregate(
{$sort : {salary : -1}},
{$group : {
_id : "$department"
employees : {$addToSet : "$name"}
},
{$project : {employees : {$slice : X}}}
)

但这行不通有两个原因:
1. $addToSet 不保证输出集的任何顺序(至少根据 documentation )。
2. $slice doesn't work in the aggregation framework .

最佳答案

虽然这不是最佳性能,但您可以实现此返回集合然后排序/接收代码。如果你想通过命令行,像

db.collection.find({ Department : 'Sales' }).sort({Salary:-1}).limit(50)

应该可以。

关于MongoDB 聚合 : How to query a limited amount of "top" documents per group?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495236/

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