问题描述
我有一个具有多个嵌入式子文档级别的文档,每个子文档都有一些嵌套数组。使用$ unwind和sort,根据日期的降序进行排序,并使用push将每行记录组合为单个数组。此推送仅在一个级别上起作用,这意味着它仅允许一次推送。如果要在嵌套级别上执行相同的操作并保留顶级数据,请获取“ errmsg”:“无法识别的表达式'$ push'”。
{
"_id" : ObjectId("5f5638d0ff25e01482432803"),"name" : "XXXX","mobileNo" : 323232323,"payroll" : [
{
"_id" : ObjectId("5f5638d0ff25e01482432801"),"month" : "Jan","salary" : 18200,"payrollDetails" : [
{
"day" : "1","salary" : 200,},{
"day" : "2","salary" : 201,}
]
},{
"_id" : ObjectId("5f5638d0ff25e01482432802"),"month" : "Feb","salary" : 8300,"salary" : 300,"salary" : 400,}
]
}
],}
Expected Result:
{
"_id" : ObjectId("5f5638d0ff25e01482432803"),"payrollDetails" : [
{
"day" : "2","salary" : 201
},{
"day" : "1","salary" : 200
}
]
},"salary" : 400
},"salary" : 300
}
]
}
],}
当天将被排序,其余所有内容都相同
我已经尝试过,但是得到了无法识别的表达式'$ push'
db.employee.aggregate([
{$unwind: '$payroll'},{$unwind: '$payroll.payrollDetails'},{$sort: {'payroll.payrollDetails.day': -1}},{$group: {_id: '$_id',payroll: {$push: {payrollDetails:{$push:
'$payroll.payrollDetails'} }}}}])
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)