国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【mongoDB查詢進(jìn)階】聚合管道(四) -- 累加器(Accumulators)

wmui / 1891人閱讀

摘要:累加器累加器本來只能使用與下,但是版本或以上,部分累加器還能使用于。當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用。

回顧 相關(guān)文章回顧

mongoDB查詢進(jìn)階--聚合管道(一)回顧
mongoDB查詢進(jìn)階--聚合管道(二)回顧
mongoDB查詢進(jìn)階--聚合管道(三)回顧

管道操作符的分類

管道操作符可以分為三類:

階段操作符(Stage Operators)

表達(dá)式操作符(Expression Operators)

累加器(Accumulators)

參考MongoDB官網(wǎng):https://docs.mongodb.com/manual/reference/operator/aggregation

本篇主要內(nèi)容是管道操作符中的累加器。

累加器(Accumulators)

累加器本來只能使用與$groud下,但是版本3.2或以上,部分累加器還能使用于$project。當(dāng)在$group中使用時(shí),累加器是針對每個(gè)分組使用的;當(dāng)在$project中使用時(shí),累加器則是針對每個(gè)字面量起作用。

常用累加器
操作符 簡述
$sum 求和操作符,v3.2+可以用于$group或是$poject
$avg 求均值操作符,v3.2+可以用于$group或是$poject
$first 用于返回分組的第一個(gè)值,只能用于$group
$last 用于返回分組的最后一個(gè)值,只能用于$group
$max 用于返回分組的最大值,v3.2+可以用于$group或是$poject
$min 用于返回分組的最小值,v3.2+可以用于$group或是$poject
$sum 求和操作符

用法:

$group下使用

{ $sum:  }

$project下使用:

{ $sum:  }
    or
{ $sum: [ ,  ... ]  }

說明:

列子 結(jié)果
{ $sum : } 只含數(shù)字 所有值的和
{ $sum : } 含數(shù)字和非數(shù)字 所有數(shù)字值的和
{ $sum : } 非數(shù)字或不存在 0

舉例:

請看后面的綜合示例

$avg 求均值操作符

用法:

$group下使用

{ $avg:  }

$project下使用:

{ $avg:  }
    or
{ $avg: [ ,  ... ]  }

舉例:

請看后面的綜合示例

$first 求第一值操作符

用法:

{ $first:  }

舉例:
假設(shè)數(shù)據(jù):

[
    { _id: 1, name: "kate", class: "a" },
    { _id: 2, name: "jack", class: "a" },
    { _id: 3, name: "kent", class: "b" },
]

操作:

db.collection.aggregate(
   [
     {
       $group:
         {
           _id: "$class",
           firstPersonName: { $first: "$name" }
         }
     }
   ]
)

結(jié)果:

[
    { _id: "a", firstPersonName: "kate" },
    { _id: "b", firstPersonName: "kent" },
]
$last 求最后值操作符

用法:

{ $last:  }

舉例:
假設(shè)數(shù)據(jù):

[
    { _id: 1, name: "kate", class: "a" },
    { _id: 2, name: "jack", class: "a" },
    { _id: 3, name: "kent", class: "b" },
]

操作:

db.collection.aggregate(
   [
     {
       $group:
         {
           _id: "$class",
           firstPersonName: { $last: "$name" }
         }
     }
   ]
)

結(jié)果:

[
    { _id: "a", firstPersonName: "jack" },
    { _id: "b", firstPersonName: "kent" },
]
$max 求最大值操作符

用法:

$group下使用

{ $max:  }

$project下使用:

{ $max:  }
    or
{ $max: [ ,  ... ]  }

舉例:

請看后面的綜合示例

$min 求最小值操作符

用法:

$group下使用

{ $min:  }

$project下使用:

{ $min:  }
    or
{ $min: [ ,  ... ]  }

舉例:

請看后面的綜合示例

綜合示例

假設(shè)有一個(gè)關(guān)于成績的集合

[
    { _id: 1, name: "kate", score: 80, class: "a", subject: "A" },
    { _id: 2, name: "kate", score: 60, class: "a", subject: "B" },
    { _id: 3, name: "jack", score: 90, class: "a", subject: "A" },
    { _id: 4, name: "jack", score: 60, class: "a", subject: "B" },
    { _id: 5, name: "nick", score: 80, class: "b", subject: "A" },
    { _id: 6, name: "nick", score: 90, class: "b", subject: "B" },
    { _id: 7, name: "kent", score: 50, class: "b", subject: "A" },
    { _id: 7, name: "kent", score: 30, class: "b", subject: "B" },
]
示例一

需求:

獲取各科目的最高分

獲取各科目的最低分

獲取各科目的平均分

操作:

db.collection.aggregate(
   [
     {
       $group:
         {
           _id: "$subject",
           maxScore: { $max: "$score" },
           minScore: { $min: "$score" },
           avgScore: { $avg: "$score" },
         }
     }
   ]
)

結(jié)果:

[
    { _id: "A", maxScore: 90, minScore: 50, avgScore: 75 },
    { _id: "B", maxScore: 90, minScore: 30, avgScore: 60 },
]
示例二

需求:

獲取每人的總分

從高到低排序

操作:

db.collection.aggregate(
   [
     {
       $group:
         {
           _id: "$name",
           totalScore: { $sum: "$score" }
         }
     },
     {
        $sort: { totalScore: -1 } 
     },
     {
        $project: {
            _id: 0,
            name: "$_id",
            totalScore: 1,
        }
     }
   ]
)

結(jié)果:

[
    { name: "nick", totalScore: 170 },
    { name: "jack", totalScore: 150 },
    { name: "kate", totalScore: 140 },
    { name: "kent", totalScore: 80 }
]

感謝閱讀~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19072.html

相關(guān)文章

  • mongoDB查詢進(jìn)階聚合管道() -- 加器(Accumulators)

    摘要:累加器累加器本來只能使用與下,但是版本或以上,部分累加器還能使用于。當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用。 回顧 相關(guān)文章回顧 mongoDB查詢進(jìn)階--聚合管道(一)回顧mongoDB查詢進(jìn)階--聚合管道(二)回顧mongoDB查詢進(jìn)階--聚合管道(三)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(Stage Oper...

    tomato 評論0 收藏0
  • mongoDB查詢進(jìn)階聚合管道(二) -- 階段操作符

    摘要:當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會(huì)更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...

    brianway 評論0 收藏0
  • mongoDB查詢進(jìn)階聚合管道(二) -- 階段操作符

    摘要:當(dāng)在中使用時(shí),累加器是針對每個(gè)分組使用的當(dāng)在中使用時(shí),累加器則是針對每個(gè)字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達(dá)式操作符組成的表達(dá)式或者在或中使用累加器能查詢統(tǒng)計(jì)的內(nèi)容會(huì)更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細(xì)說一下管道操作符。 mongoDB查詢進(jìn)階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...

    flybywind 評論0 收藏0
  • mongoDB查詢進(jìn)階聚合管道(三)--表達(dá)式操作符

    摘要:用法取反操作符,返回表達(dá)式中取反后的布爾值。用法示例假設(shè)有一個(gè)關(guān)于考試成績的集合操作如下返回結(jié)果數(shù)學(xué)操作符操作符簡述求絕對值操作符,于版新加入。用法進(jìn)一法取整操作符,取于版新加入。用法切割操作符,用于對字符串進(jìn)行分切。 回顧 相關(guān)文章回顧 mongoDB查詢進(jìn)階--聚合管道(一)回顧mongoDB查詢進(jìn)階--聚合管道(二)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(...

    wenhai.he 評論0 收藏0
  • mongoDB查詢進(jìn)階聚合管道(三)--表達(dá)式操作符

    摘要:用法取反操作符,返回表達(dá)式中取反后的布爾值。用法示例假設(shè)有一個(gè)關(guān)于考試成績的集合操作如下返回結(jié)果數(shù)學(xué)操作符操作符簡述求絕對值操作符,于版新加入。用法進(jìn)一法取整操作符,取于版新加入。用法切割操作符,用于對字符串進(jìn)行分切。 回顧 相關(guān)文章回顧 mongoDB查詢進(jìn)階--聚合管道(一)回顧mongoDB查詢進(jìn)階--聚合管道(二)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(...

    v1 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<