嗨我是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
}
}
}
在这种情况下,这个用户有两辆车我怎样才能根据谁有最大车辆进行排序
答案 0 :(得分:1)
如果您使用的是mongo v3.4 +,可以尝试以下聚合管道
$objectToArray
将cars
转换为数组,$size
转换为汽车数组
db.cols.aggregate(
[
{$addFields: {count : {$size : {$ifNull : [{$objectToArray : "$cars"}, []]}}}},
{$sort: {count : -1 }}
]
)