如何解决MongoDB查询无法按数组中的字段排序
我在mongodb集合中有以下数据:
{
"base" : "XYZ","zone" : "ABC WEST","employees" : [
{
"fullname" : "RONALD GONZALEZ","status" : "approved","days" : 1.0
},{
"fullname" : "RODRIGO GONZALEZ","days" : 4.0
},{
"fullname" : "GUILLERMO BARROS","days" : 4.0
}
]
}
{
"base" : "ABC","zone" : "ABC CENTER","employees" : [
{
"fullname" : "MARTA DIAZ CABELLO","days" : 2.0
},{
"fullname" : "ALEXIS MARAMBIO","days" : 2.0
}
]
}
{
"base" : "ABC","zona" : "ABC AU","employees" : [
{
"fullname" : "JOSE MELLADO",{
"fullname" : "MARSAL MELLADO",{
"fullname" : "ALEJANDRO KOBBRT","days" : 5.0
},{
"fullname" : "MANUEL SOLIS","days" : 4.0
}
]
}
我需要使用以下格式对这些文档进行排序:(基础升序,区域升序,内部员工按全名升序排列):
{ base: 1,zone: 1,"employees.fullname" : 1 }
但是,由于这些参数只能按基本区域排序,因此在employeeess数组中,无法按 name字段进行排序:
我试图得到这个结果:
{
"_id" : ObjectId("5f5e3ab682947e5e20fa4084"),"base" : "ABC","zone" : "ABC AU","employees" : [
{
"fullname" : "ALEJANDRO KOBBRT",{
"fullname" : "JOSE MELLADO","days" : 4.0
}
]
}
{
"_id" : ObjectId("5f5e3ab682947e5e20fa4083"),"employees" : [
{
"fullname" : "ALEXIS MARAMBIO",{
"fullname" : "MARTA DIAZ CABELLO","days" : 2.0
}
]
}
{
"_id" : ObjectId("5f5e3ab682947e5e20fa4082"),"base" : "XYZ","employees" : [
{
"fullname" : "GUILLERMO BARROS",{
"fullname" : "RONALD GONZALEZ","days" : 1.0
}
]
}
更新
感谢帮助,以下是我的汇总工作。
db.getCollection("test").aggregate(
[
{ $unwind: "$employees" },{ $sort: { "base": 1,"zone": 1,"employees.fullname": 1 } },{
$group: {
_id: { id: "$_id",base: "$base",zone: "$zone" },employees: { $push: "$employees" }
}
},{
$project: {
_id: "$_id.id",base: "$_id.base",zone: "$_id.zone",employees: "$employees"
}
},"zone": 1 } }
]
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。