要按陣列長度對 MongoDB 聚合框架進行排序?


要按陣列長度進行排序,請使用 aggregate()。在此之前,請使用 $sum 獲取陣列中的記錄數。讓我們使用文件建立一個集合

> db.demo33.insertOne({"ListOfStudent":["Chris","Bob"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e17556ccfb11e5c34d898ca")
}
> db.demo33.insertOne({"ListOfStudent":["David","Adam","Mike"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e17557acfb11e5c34d898cb")
}
> db.demo33.insertOne({"ListOfStudent":["Carol","Sam","John","Robert"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e1755a3cfb11e5c34d898cc")
}

藉助 find() 方法從集合中顯示所有文件 -

> db.demo33.find();

這將生成以下輸出 -

{ "_id" : ObjectId("5e17556ccfb11e5c34d898ca"), "ListOfStudent" : [ "Chris", "Bob" ] }
{ "_id" : ObjectId("5e17557acfb11e5c34d898cb"), "ListOfStudent" : [ "David", "Adam", "Mike" ] }
{ "_id" : ObjectId("5e1755a3cfb11e5c34d898cc"), "ListOfStudent" : [ "Carol", "Sam", "John", "Robert" ] }

以下是按陣列長度進行排序的查詢 -

> db.demo33.aggregate({$unwind:"$ListOfStudent"}, { $group : {_id:'$_id', ct:{$sum:1}}}, { $sort :{ ct: -1}} );

這將生成以下輸出 -

{ "_id" : ObjectId("5e1755a3cfb11e5c34d898cc"), "ct" : 4 }
{ "_id" : ObjectId("5e17557acfb11e5c34d898cb"), "ct" : 3 }
{ "_id" : ObjectId("5e17556ccfb11e5c34d898ca"), "ct" : 2 }

更新時間:02-Apr-2020

2K+ 瀏覽量

啟動您的 職業生涯

完成課程獲得認證

開始
廣告