我有一份員工名單,每名員工屬於一個部門和一家公司。可能使用聚合框架使用slice操作符?
員工還有薪水歷史。最後一個值是他們目前的薪水。
例子:
{
name: "Programmer 1"
employee_id: 1,
dept_id: 1,
company_id: 1,
salary: [50000,50100,50200]
},
{
name: "Programmer 2"
employee_id: 2,
dept_id: 1,
company_id: 1,
salary: [50000,50200,50300]
},
{
name: "Manager"
employee_id: 3,
dept_id: 2,
company_id: 1,
salary: [60000,60500,61000]
},
{
name: "Contractor (different company)"
employee_id: 4,
dept_id: 1,
company_id: 2,
salary: [60000,60500,75000]
}
我想找到員工目前的平均工資,由dept_id爲和的company_id分組。
是這樣的:
db.employees.aggregate(
{ $project : { employee_id: 1, dept_id: 1, company_id: 1, salaries: 1}},
{ $unwind : "$salaries" },
{
"$group" : {
"_id" : {
"dept_id" : "$dept_id",
"company_id" : "$company_id",
},
current_salary_avg : { $avg : "$salaries.last()" }
}
}
);
在這種情況下這將是
公司1,第1組:50250
公司1,組2:61000
公司2,組1:75000
我見過一些類似於$ unwind的例子,但我正在努力獲得薪水的最後價值。在這種情況下,$ slice是否是正確的操作符,如果是這樣的話,我如何在項目中使用它?
沒有排序,你可以得到最後的東西,你需要一種即使片,讓你覺得你會得到 – Sammaye