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

資訊專欄INFORMATION COLUMN

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

tomato / 1834人閱讀

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

回顧 相關文章回顧

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
$sum 求和操作符

用法:

$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查詢進階聚合管道() -- 加器(Accumulators)

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

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

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

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

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

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

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

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

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

    v1 評論0 收藏0

發表評論

0條評論

tomato

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<