摘要:累加器累加器本來只能使用與下,但是版本或以上,部分累加器還能使用于。當在中使用時,累加器是針對每個分組使用的當在中使用時,累加器則是針對每個字面量起作用。
回顧 相關文章回顧
mongoDB查詢進階--聚合管道(一)回顧
mongoDB查詢進階--聚合管道(二)回顧
mongoDB查詢進階--聚合管道(三)回顧
管道操作符可以分為三類:
階段操作符(Stage Operators)
表達式操作符(Expression Operators)
累加器(Accumulators)
參考MongoDB官網:https://docs.mongodb.com/manual/reference/operator/aggregation
累加器(Accumulators)本篇主要內容是管道操作符中的累加器。
累加器本來只能使用與$groud下,但是版本3.2或以上,部分累加器還能使用于$project。當在$group中使用時,累加器是針對每個分組使用的;當在$project中使用時,累加器則是針對每個字面量起作用。
常用累加器操作符 | 簡述 |
---|---|
$sum | 求和操作符,v3.2+可以用于$group或是$poject |
$avg | 求均值操作符,v3.2+可以用于$group或是$poject |
$first | 用于返回分組的第一個值,只能用于$group |
$last | 用于返回分組的最后一個值,只能用于$group |
$max | 用于返回分組的最大值,v3.2+可以用于$group或是$poject |
$min | 用于返回分組的最小值,v3.2+可以用于$group或是$poject |
用法:
$group下使用
{ $sum:}
$project下使用:
{ $sum:} or { $sum: [ , ... ] }
說明:
列子 | 值 | 結果 |
---|---|---|
{ $sum : |
只含數字 | 所有值的和 |
{ $sum : |
含數字和非數字 | 所有數字值的和 |
{ $sum : |
非數字或不存在 | 0 |
舉例:
$avg 求均值操作符請看后面的綜合示例
用法:
$group下使用
{ $avg:}
$project下使用:
{ $avg:} or { $avg: [ , ... ] }
舉例:
$first 求第一值操作符請看后面的綜合示例
用法:
{ $first:}
舉例:
假設數據:
[ { _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" } } } ] )
結果:
[ { _id: "a", firstPersonName: "kate" }, { _id: "b", firstPersonName: "kent" }, ]$last 求最后值操作符
用法:
{ $last:}
舉例:
假設數據:
[ { _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" } } } ] )
結果:
[ { _id: "a", firstPersonName: "jack" }, { _id: "b", firstPersonName: "kent" }, ]$max 求最大值操作符
用法:
$group下使用
{ $max:}
$project下使用:
{ $max:} or { $max: [ , ... ] }
舉例:
$min 求最小值操作符請看后面的綜合示例
用法:
$group下使用
{ $min:}
$project下使用:
{ $min:} or { $min: [ , ... ] }
舉例:
綜合示例請看后面的綜合示例
假設有一個關于成績的集合
[ { _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" }, } } ] )
結果:
[ { _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, } } ] )
結果:
[ { name: "nick", totalScore: 170 }, { name: "jack", totalScore: 150 }, { name: "kate", totalScore: 140 }, { name: "kent", totalScore: 80 } ]
感謝閱讀~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/85157.html
摘要:累加器累加器本來只能使用與下,但是版本或以上,部分累加器還能使用于。當在中使用時,累加器是針對每個分組使用的當在中使用時,累加器則是針對每個字面量起作用。 回顧 相關文章回顧 mongoDB查詢進階--聚合管道(一)回顧mongoDB查詢進階--聚合管道(二)回顧mongoDB查詢進階--聚合管道(三)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(Stage Oper...
摘要:當在中使用時,累加器是針對每個分組使用的當在中使用時,累加器則是針對每個字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達式操作符組成的表達式或者在或中使用累加器能查詢統計的內容會更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細說一下管道操作符。 mongoDB查詢進階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...
摘要:當在中使用時,累加器是針對每個分組使用的當在中使用時,累加器則是針對每個字面量起作用,具體用法下一篇文章闡述。另外再加以配合表達式操作符組成的表達式或者在或中使用累加器能查詢統計的內容會更加的多樣化。 上篇最后說到管道操作符,本篇文章將詳細說一下管道操作符。 mongoDB查詢進階--聚合管道(一)回顧 什么是管道操作符(Aggregation Pipeline Operators) ...
摘要:用法取反操作符,返回表達式中取反后的布爾值。用法示例假設有一個關于考試成績的集合操作如下返回結果數學操作符操作符簡述求絕對值操作符,于版新加入。用法進一法取整操作符,取于版新加入。用法切割操作符,用于對字符串進行分切。 回顧 相關文章回顧 mongoDB查詢進階--聚合管道(一)回顧mongoDB查詢進階--聚合管道(二)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(...
摘要:用法取反操作符,返回表達式中取反后的布爾值。用法示例假設有一個關于考試成績的集合操作如下返回結果數學操作符操作符簡述求絕對值操作符,于版新加入。用法進一法取整操作符,取于版新加入。用法切割操作符,用于對字符串進行分切。 回顧 相關文章回顧 mongoDB查詢進階--聚合管道(一)回顧mongoDB查詢進階--聚合管道(二)回顧 管道操作符的分類 管道操作符可以分為三類: 階段操作符(...
閱讀 1699·2021-11-12 10:36
閱讀 1615·2021-11-12 10:36
閱讀 3442·2021-11-02 14:46
閱讀 3798·2019-08-30 15:56
閱讀 3534·2019-08-30 15:55
閱讀 1463·2019-08-30 15:44
閱讀 1044·2019-08-30 14:00
閱讀 2735·2019-08-29 18:41