如何在基础数组/对象类型字段上对mongo集合进行排序

时间:2018-02-04 10:45:06

标签: mongodb

嗨我是mongodb中的新手我想根据字段排序集合,这是一个数组/对象,例如用户可以有很多车,

{
  "_id" : ObjectId("5a7428a4408437d7155bbde7"),
  "firstName" : "some user",
  "lastName" : "some user",
  "phone" : some_phone,
  "__v" : 0,
  "cars" : {
  "car_id_1" : {
    "_id" : "5a741201408437d7155bbdcd",
        "name" : "1st vehicle",
        "vNumber" : "4tvechicle",
        "maxCapacity" : 34

},
"car_id_2" : {
    "_id" : "5a7412bc408437d7155bbdde",
        "name" : "2nd vehicle",
        "vNumber" : "78opsd",
        "maxCapacity" : 54

  }
  }
 }

在这种情况下,这个用户有两辆车我怎样才能根据谁有最大车辆进行排序

1 个答案:

答案 0 :(得分:1)

如果您使用的是mongo v3.4 +,可以尝试以下聚合管道

$objectToArraycars转换为数组,$size转换为汽车数组

db.cols.aggregate(
  [
    {$addFields: {count : {$size : {$ifNull : [{$objectToArray : "$cars"}, []]}}}},
    {$sort: {count : -1 }}
  ]
)