SDK數(shù)據(jù)庫 Aggregate·返回排序后結(jié)果

2022-05-12 16:50 更新

Aggregate.sortByCount(object:Object): Aggregate

支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web

聚合階段。根據(jù)傳入的表達式,將傳入的集合進行分組(group)。然后計算不同組的數(shù)量,并且將這些組按照它們的數(shù)量進行排序,返回排序后的結(jié)果。

參數(shù)

object: Object

返回值

Aggregate

API 說明

sortByCount 的調(diào)用方式如下:

sortByCount(<表達式>)

表達式的形式是:$ + 指定字段。請注意:不要漏寫 $ 符號。

示例

統(tǒng)計基礎(chǔ)類型

假設(shè)集合 passages 的記錄如下:

{ "category": "Web" }
{ "category": "Web" }
{ "category": "Life" }

下面的代碼就可以統(tǒng)計文章的分類信息,并且計算每個分類的數(shù)量。即對 category 字段執(zhí)行 sortByCount 聚合操作。

db.collection('passages')
  .aggregate()
  .sortByCount('$category')
  .end()

返回的結(jié)果如下所示:Web 分類下有2篇文章,Life 分類下有1篇文章。

{ "_id": "Web", "count": 2 }
{ "_id": "Life", "count": 1 }

解構(gòu)數(shù)組類型

假設(shè)集合 passages 的記錄如下:tags 字段對應(yīng)的值是數(shù)組類型。

{ "tags": [ "JavaScript", "C#" ] }
{ "tags": [ "Go", "C#" ] }
{ "tags": [ "Go", "Python", "JavaScript" ] }

如何統(tǒng)計文章的標簽信息,并且計算每個標簽的數(shù)量?因為 tags 字段對應(yīng)的數(shù)組,所以需要借助 unwind 操作解構(gòu) tags 字段,然后再調(diào)用 sortByCount。

下面的代碼實現(xiàn)了這個功能:

db.collection('passages')
  .aggregate()
  .unwind(`$tags`)
  .sortByCount(`$tags`)
  .end()

返回的結(jié)果如下所示:

{ "_id": "Go", "count": 2 }
{ "_id": "C#", "count": 2 }
{ "_id": "JavaScript", "count": 2 }
{ "_id": "Python", "count": 1 }


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號