W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
支持端:小程序 2.7.4, 云函數(shù) 0.8.1, Web
聚合階段。將輸入記錄根據(jù)給定的條件劃分成不同的組,每組即一個 bucket。與 bucket 的其中一個不同之處在于無需指定 boundaries,bucketAuto 會自動嘗試將記錄盡可能平均的分散到每組中。
每組分別作為一個記錄輸出,包含一個以包含組中最大值和最小值兩個字段的對象為值的 _id 字段和一個以組中記錄數(shù)為值的 count 字段。count 在沒有指定 output 的時候是默認(rèn)輸出的。
bucketAuto 的形式如下:
bucketAuto({
groupBy: <expression>,
buckets: <number>,
granularity: <string>,
output: {
<output1>: <accumulator expr>,
...
<outputN>: <accumulator expr>
}
})
groupBy 是一個用以決定分組的表達(dá)式,會應(yīng)用在各個輸入記錄上??梢杂?nbsp;$ 前綴加上要用以分組的字段路徑來作為表達(dá)式。除非用 default 指定了默認(rèn)值,否則每個記錄都需要包含指定的字段,且字段值必須在 boundaries 指定的范圍之內(nèi)。
buckets 是一個用于指定劃分組數(shù)的正整數(shù)。
granularity 是可選枚舉值字符串,用于保證自動計算出的邊界符合給定的規(guī)則。這個字段僅可在所有 groupBy 值都是數(shù)字并且沒有 NaN 的情況下使用。枚舉值包括:R5、R10、R20、R40、R80、1-2-5、E6、E12、E24、E48、E96、E192、POWERSOF2。
output 可選,用以決定輸出記錄除了 _id 外還要包含哪些字段,各個字段的值必須用累加器表達(dá)式指定。當(dāng) output 指定時,默認(rèn)的 count 是不會被默認(rèn)輸出的,必須手動指定:
output: {
count: $.sum(1),
...
<outputN>: <accumulator expr>
}
在以下情況中,輸出的分組可能會小于給定的組數(shù):
granularity 用于保證邊界值屬于一個給定的數(shù)字序列。
Renard 序列是以 10 的 5 / 10 / 20 / 40 / 80 次方根來推導(dǎo)的、在 1.0 到 10.0 (如果是 R80 則是 10.3) 之間的數(shù)字序列。
設(shè)置 granularity 為 R5 / R10 / R20 / R40 / R80 就把邊界值限定在序列內(nèi)。如果 groupBy 的值不在 1.0 到 10.0 (如果是 R80 則是 10.3) 內(nèi),則序列數(shù)字會自動乘以 10。
E 序列是以 10 的 6 / 12 / 24 / 48 / 96 / 192 次方跟來推導(dǎo)的、帶有一個特定誤差的、在 1.0 到 10.0 之間的數(shù)字序列。
1-2-5 序列 表現(xiàn)與三值 Renard 序列一樣。
由 2 的各次方組成的序列數(shù)字。
假設(shè)集合 items 有如下記錄:
{
_id: "1",
price: 10.5
}
{
_id: "2",
price: 50.3
}
{
_id: "3",
price: 20.8
}
{
_id: "4",
price: 80.2
}
{
_id: "5",
price: 200.3
}
對上述記錄進(jìn)行自動分組,分成三組:
const $ = db.command.aggregate
db.collection('items').aggregate()
.bucket({
groupBy: '$price',
buckets: 3,
})
.end()
返回結(jié)果如下:
{
"_id": {
"min": 10.5,
"max": 50.3
},
"count": 2
}
{
"_id": {
"min": 50.3,
"max": 200.3
},
"count": 2
}
{
"_id": {
"min": 200.3,
"max": 200.3
},
"count": 1
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: