首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何显示所有具有最高薪资MongoDB的人员

如何显示所有具有最高薪资MongoDB的人员
EN

Stack Overflow用户
提问于 2021-02-05 03:50:15
回答 1查看 56关注 0票数 0

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

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

此方法不适用于匹配中的最大值

代码语言:javascript
复制
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"}
    }
}
])

示例:

代码语言:javascript
复制
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
                    })      

所以我需要展示类似这样的东西:

代码语言:javascript
复制
nombre: Santiago
nombre: Maria

因为那两个人是唯一有最高工资的。

EN

回答 1

Stack Overflow用户

发布于 2021-02-05 05:32:25

我想你必须这样做:

代码语言:javascript
复制
db.trabajadores.aggregate([
   
   { $group:
       { 
        _id: '$nombre',
        'topSalario': { $sum: '$salario' }
       }
   },
   { $sort: { 'topSalario': -1 } },
   { $limit: 2 }
])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66052829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档