Попробуйте агрегатный конвейер как:
Примечание: этапы конвейера $ unwind, $ sort, $ group можно игнорировать, если вы не хотите сортировать по году
dbname.aggregate([
{
$project: {
vehicles: {
$concatArrays: [
{
$map: {
input: "$fourWheeler.cars",
as: "item",
in: {
"make": "$$item.make",
"model": "$$item.model",
"year": "$$item.year",
"category": "fourWheeler"
}
}
},
{
$map: {
input: "$twoWheeler.motorBikes",
as: "item",
in: {
"make": "$$item.make",
"model": "$$item.model",
"year": "$$item.year",
"category": "twoWheeler"
}
}
}
]
}
}
},
{
$unwind: "$vehicles"
},
{
$sort: {
"vehicles.year": -1
}
},
{
$group: {
_id: "$_id",
vehicles: {
$push: "$vehicles"
}
}
}
])
Даствывод:
[
{
"_id": ObjectId("5d8605c9a9410a0e3ca50f12"),
"vehicles": [
{
"category": "twoWheeler",
"make": "Suzuki",
"model": "Hayabusa",
"year": 2018
},
{
"category": "fourWheeler",
"make": "Toyota",
"model": "Camry",
"year": 2012
},
{
"category": "fourWheeler",
"make": "Honda",
"model": "Accord",
"year": 2010
},
{
"category": "twoWheeler",
"make": "Yamaha",
"model": "FZ1",
"year": 2005
}
]
}
]