MongoDB中怎么實現(xiàn)管道操作符,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
在未央等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設 網(wǎng)站設計制作按需定制開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站制作,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,未央網(wǎng)站建設費用合理。
$group
$group可以用來對文檔進行分組,比如我想將訂單按照城市進行分組,并統(tǒng)計出每個城市的訂單數(shù)量:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",count:{$sum:1}}})
我們將要分組的字段傳遞給$group函數(shù)的_id
字段,然后每當查到一個,就給count加1,這樣就可以統(tǒng)計出每個城市的訂單數(shù)量。
通過算術操作符我們可以對分組后的文檔進行求和或者求平均數(shù)。比如我想計算每個城市訂單運費總和,如下:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",totalFreight:{$sum:"$freight"}}})
先按地址分組,再求和。這里貼出部分查詢結(jié)果,如下:
{ "_id" : "HaiKou", "totalFreight" : 20.0 } { "_id" : "HangZhou", "totalFreight" : 10.0 }
也可以計算每個城市運費的平均數(shù),如下:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",avgFreight:{$avg:"$freight"}}})
先按地址分組,然后再計算平均數(shù)。
極值操作符用來獲取分組后數(shù)據(jù)集的邊緣值,比如獲取每個城市最貴的運費,如下:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",maxFreight:{$max:"$freight"}}})
查詢每個城市最便宜的運費:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",minFreight:{$min:"$freight"}}})
按城市分組之后,獲取該城市第一個運費單:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",firstFreight:{$first:"$freight"}}})
獲取分組后的最后一個運費單:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",lastFreight:{$last:"$freight"}}})
$addToSet可以將分組后的某一個字段放到一個數(shù)組中,但是重復的元素將只出現(xiàn)一次,而且元素加入到數(shù)組中的順序是無規(guī)律的,比如將分組后的每個城市的運費放到一個數(shù)組中,如下:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",freights:{$addToSet:"$freight"}}})
重復的freight將不會被添加進來。
$push則對重復的數(shù)據(jù)不做限制,都可以添加進來,如下:
db.sang_collect.aggregate({$group:{_id:"$orderAddressL",freights:{$push:"$freight"}}})
$unwind用來實現(xiàn)對文檔的拆分,可以將文檔中的值拆分為單獨的文檔,比如我的數(shù)據(jù)如下:
{ "_id" : ObjectId("59f93c8b8523cfae4cf4ba86"), "name" : "魯迅", "books" : [ { "name" : "吶喊", "publisher" : "花城出版社" }, { "name" : "彷徨", "publisher" : "南海出版出" } ] }
使用$unwind命令將其拆分為獨立文檔,如下:
db.sang_books.aggregate({$unwind:"$books"})
拆分結(jié)果如下:
{ "_id" : ObjectId("59f93c8b8523cfae4cf4ba86"), "name" : "魯迅", "books" : { "name" : "吶喊", "publisher" : "花城出版社" } } { "_id" : ObjectId("59f93c8b8523cfae4cf4ba86"), "name" : "魯迅", "books" : { "name" : "彷徨", "publisher" : "南海出版出" } }
$sort操作可以對文檔進行排序,如下:
db.sang_collect.aggregate({$sort:{orderAddressL:1}})
用法和我們之前介紹普通搜索中的一致,可以按照存在的字段排序,也可以按照重命名的字段排序,如下:
db.sang_collect.aggregate({$project:{oa:"$orderAddressL"}},{$sort:{oa:-1}})
1表示升序、-1表示降序。
$limit返回結(jié)果中的前n個文檔,如下表示返回結(jié)果中的前三個文檔:
db.sang_collect.aggregate({$project:{oa:"$orderAddressL"}},{$limit:3})
$skip表示跳過前n個文檔,比如跳過前5個文檔,如下:
db.sang_collect.aggregate({$project:{oa:"$orderAddressL"}},{$skip:5})
$skip的效率低,要慎用。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
本文標題:MongoDB中怎么實現(xiàn)管道操作符
文章地址:http://m.2m8n56k.cn/article38/jdsipp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、電子商務、手機網(wǎng)站建設、面包屑導航、全網(wǎng)營銷推廣、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)