我在mongo数据库里有两个收藏-
>
车辆-车辆
车辆销。车辆销
我想按stockid连接,按description.type排序,按description.type分组。 意思是,在UI中有一个名为DAMAGE的列,如果我用这个字段排序,那么它将按最高的损坏计数排序。 你的帮助将不胜感激。
可以使用聚合管道进行计算和排序。 我建了一条我认为符合你们要求的管道。
[{$lookup: {
from: 'vehicles',
localField: 'stockId',
foreignField: 'stockid',
as: 'vehicleInfo'
}},
{$addFields: {
damageCount: {
"$size": {
"$filter": {
"input": "$description",
"as": "desc",
"cond": { "$eq": ["$$desc.type", "DAMAGE"]}
}
}
}
}},
{$sort: {
damageCount: -1
}}]
$lookup阶段从加入vehicles
集合和vehicle-pins
集合开始,该集合位于stockid
上。 此阶段将Vehicles
集合中的信息放入名为VehicleInfo
的数组中。
$addfields阶段向每个文档添加一个名为DamageCount
的字段,该字段计算说明中有多少元素的类型等于Damage
。
$sort阶段按新的damageCount
字段降序对文档进行排序。