提问者:小点点

在mongo DB中,我如何用NodeJs映射的另一个集合中的数据进行排序?


我在mongo数据库里有两个收藏-

>

  • 车辆-车辆

    车辆销。车辆销

    我想按stockid连接,按description.type排序,按description.type分组。 意思是,在UI中有一个名为DAMAGE的列,如果我用这个字段排序,那么它将按最高的损坏计数排序。 你的帮助将不胜感激。


  • 共1个答案

    匿名用户

    可以使用聚合管道进行计算和排序。 我建了一条我认为符合你们要求的管道。

    [{$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字段降序对文档进行排序。