MongoDB彙總運算之group和aggregate聚集架構簡單彙總(10)

來源:互聯網
上載者:User

標籤:

彙總運算之group

文法:

db.collection.group(

{

key:{key1:1,key2:1},

cond:{},

reduce: function(curr,result) {

},

initial:{},

finalize:function() {

}

}

 

)

key: 分組欄位

cond:查詢條件

reduce:彙總函式

initial:初始化

finalize:統計一組後的回呼函數

 

 

#查詢每個欄目下的商品數量

db.goods.group(

{

key:{cat_id:1},

cond:{},

reduce:function(curr,result) {

    result.cnt += 1;

},

initial:{cnt:0}

}

)

 

#查詢每個欄目下價格高於50元的商品數量

db.goods.group(

{

key:{cat_id:1},

cond:{shop_price:{$gt:50}},

reduce:function(curr,result) {

    result.cnt += 1;

},

initial:{cnt:0}

}

)

 

 

 

#每個欄目下的商品庫存量 sum()操作

db.goods.group(

{

key:{cat_id:1},

cond:{},

reduce:function(curr,result) {

    result.num += curr.goods_number;

},

initial:{num:0}

}

)

 

#查詢每個欄目最貴的商品價格, max()操作

db.goods.group(

{

key:{cat_id:1},

cond:{},

reduce:function(curr , result) {

    if(curr.shop_price > result.max) {

        result.max = curr.shop_price;

    }

},

initial:{max:0}

}

)

 

 

 

 

#查詢每個欄目下商品的平均價格

db.goods.group(

{

key:{cat_id:1},

cond:{},

reduce:function(curr , result) {

    result.cnt += 1;

    result.sum += curr.shop_price;

},

initial:{sum:0,cnt:0},

finalize:function(result) {

    result.avg = result.sum/result.cnt;

}

}

)

 

 

 

使用aggregate聚集架構簡單彙總

 

#查詢每個欄目下的商品數量

db.collection.aggregate

(

[

{$group:{_id:"$cat_id",total:{$sum:1}}}

]

);

#查詢goods下有多少條商品,select count(*) from goods

db.collection.aggregate

(

 

[

{$group:{_id:null,total:{$sum:1}}}

]

)

 

#查詢每個欄目下 價格大於50元的商品個數

db.collection.aggregate

(

[

{$match:{shop_price:{$gt:50}}},

{$group:{_id:"$cat_id",total:{$sum:1}}}

]

)

 

#查詢每個欄目下 價格大於50元的商品個數

#並篩選出"滿足條件的商品個數" 大於等於3的欄目

db.collection.aggregate

(

[

{$match:{shop_price:{$gt:50}}},

{$group:{_id:"$cat_id",total:{$sum:1}}},

{$match:{total:{$gte:3}}}

]

)

 

 

#查詢每個欄目下的庫存量

db.collection.aggregate

(

[

{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},

]

)

 

#查詢每個欄目下的庫存量,並按庫存量排序

db.collection.aggregate

(

[

{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},

{$sort:{total:1}}

]

)

 

#查詢每個欄目下的庫存量,並按庫存量排序

db.collection.aggregate

(

[

{$group:{_id:"$cat_id" , total:{$sum:"$goods_number"}}},

{$sort:{total:1}},

{$limit:3}

]

)

 

#查詢每個欄目的商品平均價格,並按平均價格由高到低排序

db.collection.aggregate

(

[

{$group:{_id:"$cat_id" , avg:{$avg:"$shop_price"}}},

{$sort:{avg:-1}}

]

)

MongoDB彙總運算之group和aggregate聚集架構簡單彙總(10)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.