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

2022-05-12 16:50 更新

Aggregate.sortByCount(object:Object): Aggregate

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

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

參數(shù)

object: Object

返回值

Aggregate

API 說(shuō)明

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

sortByCount(<表達(dá)式>)

表達(dá)式的形式是:$ + 指定字段。請(qǐng)注意:不要漏寫 $ 符號(hào)。

示例

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

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

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

下面的代碼就可以統(tǒng)計(jì)文章的分類信息,并且計(jì)算每個(gè)分類的數(shù)量。即對(duì) 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 字段對(duì)應(yīng)的值是數(shù)組類型。

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

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

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

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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)