当我在mongodb集合中进行全部查找时,我希望将maintenanceList
按旧的maintenanceDate
排序到最新。
maintenanceDate
的种类不应影响查找所有查询的父母顺序
{
"_id":"507f191e810c19729de860ea",
"color":"black",
"brand":"brandy",
"prixVenteUnitaire":200.5,
"maintenanceList":[
{
"cost":100.40,
"maintenanceDate":"2017-02-07T00:00:00.000+0000"
},
{
"cost":4000.40,
"maintenanceDate":"2019-08-07T00:00:00.000+0000"
},
{
"cost":300.80,
"maintenanceDate":"2018-08-07T00:00:00.000+0000"
}
]
}
有人猜想怎么做? 谢谢
答案 0 :(得分:1)
无论字段在上一个流水线阶段中处于什么顺序,因为$ project和$ group之类的操作都有效地“复制”了相同位置。因此,它不会改变汇总结果中字段的顺序。
通过聚合进行的maintenanceDate
排序不会影响“查找全部”查询中的父顺序。
因此,只需执行此操作即可。
假设我的收藏名称为example
。
db.example.aggregate([
{
"$unwind": "$maintenanceList"
},
{
"$sort": {
"_id": 1,
"maintenanceList.maintenanceDate": 1
}
},
{
"$group": {
"_id": "$_id",
"color": {
$first: "$color"
},
"brand": {
$first: "$brand"
},
"prixVenteUnitaire": {
$first: "$prixVenteUnitaire"
},
"maintenanceList": {
"$push": "$maintenanceList"
}
}
}
])