面试题答案
一键面试实现思路
- 首先计算
employees
集合中所有员工的平均薪资。 - 使用
find
命令筛选出部门为‘研发部’或‘市场部’,且薪资高于平均薪资的员工。 - 对筛选出的员工按
join_date
从早到晚排序。 - 仅返回员工的姓名、部门和薪资。
具体命令
假设使用的是 MongoDB,命令如下:
// 计算平均薪资
const averageSalary = db.employees.aggregate([
{ $group: { _id: null, avgSalary: { $avg: "$salary" } } }
]).toArray()[0].avgSalary;
// 查询符合条件的员工
db.employees.find({
$and: [
{ department: { $in: ['研发部', '市场部'] } },
{ salary: { $gt: averageSalary } }
]
}, { name: 1, department: 1, salary: 1, _id: 0 })
.sort({ join_date: 1 });
在上述代码中,先通过aggregate
方法计算平均薪资,然后在find
方法中使用$and
操作符来满足部门和薪资的条件,投影中指定只返回name
、department
和salary
字段,最后通过sort
方法按join_date
升序排序。