作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我有一个包含员工文档的 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/
我是一名优秀的程序员,十分优秀!