如何显示所有人的最大工资MongoDB



需要显示所有人的最高工资,我做了,但只显示其中一个。所以我想在$match里面使用$max,但我不能。我只能使用一种方法。

db.trabajadores.aggregate([
{$sort: {salario: -1}},
{$group:
{ 
_id: "Trabajador",
nombre: {$first:"$nombre.nomb"},
apellido1: {$first:"$nombre.ape1"},
apellido2: {$first:"$nombre.ape2"}
}
}
])

这个方法不适用于match

内部的Max
db.trabajadores.aggregate([
{$sort: {salario: -1}},
{$match: {salario: {$max: "$salario"}}},
{$group:
{ 
_id: "Trabajador",
nombre: {$first:"$nombre.nomb"},
apellido1: {$first:"$nombre.ape1"},
apellido2: {$first:"$nombre.ape2"}
}
}
])

的例子:

db.trabajadores.insert({nombre: {nomb:"Alicia",ape1:"Ramos", ape2:"Martín"},
direccion: {población: "Madrid", calle : "Avda Toledo 10"},
salario: 1200,
oficios:["Profesora", "Analista"],
primas: [20,30,40],
edad:50
})

db.trabajadores.insert({nombre: {nomb:"Juan",ape1:"Gil", ape2:"Sánchez"},
direccion: {población: "Madrid", calle : "Mayor 12"},
salario: 1400,
oficios:["Programador", "Analista"],
primas: [120,130,40],
edad: 30
})
db.trabajadores.insert({nombre: {nomb:"Raquel",ape1:"García", ape2:"del Amo"},
direccion: {población: "Toledo", calle : "Ocaña 22"},
salario: 1500,
oficios:["Profesor"],
primas: [60, 30, 80],
edad: 45
})
db.trabajadores.insert({nombre: {nomb:"Fernando",ape1:"Romo", ape2:"Pérez"},
direccion: {población: "Talavera", calle : "Las cañas 2"},
salario: 1300,
oficios:["Profesor", "Representante"],
edad: 43
})
db.trabajadores.insert({nombre: {nomb:"María",ape1:"Suárez", ape2:"Verdes"},
direccion: {población: "Toledo", calle : "Av Madrid 32"},
salario: 1600,
oficios:["Profesor", "Contable"],
primas: [30, 70, 80],
edad: 55
})  
db.trabajadores.insert({nombre: {nomb:"Santiago",ape1:"Gómez", ape2:"Corregidor"},
direccion: {población: "Toledo", calle : "Av Madrid 32"},
salario: 1600,
edad: 55
})      

所以我需要显示这样的内容:

nombre: Santiago
nombre: Maria

因为那是唯一有顶薪的。

我想你必须这样做:

db.trabajadores.aggregate([

{ $group:
{ 
_id: '$nombre',
'topSalario': { $sum: '$salario' }
}
},
{ $sort: { 'topSalario': -1 } },
{ $limit: 2 }
])

最新更新