一 介紹 管道在Unix和Linux中一般用于將當(dāng)前命令的輸出結(jié)果作為下一個(gè)命令的參數(shù)。MongoDB的聚合管道將MongoDB文檔在一個(gè)管道處理完畢后將結(jié)果傳遞給下一個(gè)管道處理。管道操作是可以重復(fù)的。 表達(dá)式:處理輸入文檔并輸出。表達(dá)式是無狀態(tài)的,只能用于計(jì)算當(dāng)前聚合管道的文檔,不能處理其它的文檔。 這里我們介紹一下聚合框架中常用的幾個(gè)操作: $project:修改輸入文檔的結(jié)構(gòu)。可以用來重命名、增加或刪除域,也可以用于創(chuàng)建計(jì)算結(jié)果以及嵌套文檔。 $match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。$match使用MongoDB的標(biāo)準(zhǔn)查詢操作。 $limit:用來限制MongoDB聚合管道返回的文檔數(shù)。 $skip:在聚合管道中跳過指定數(shù)量的文檔,并返回余下的文檔。 $unwind:將文檔中的某一個(gè)數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個(gè)值。 $group:將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果。 $sort:將輸入文檔排序后輸出。 $geoNear:輸出接近某一地理位置的有序文檔。 二 管道操作符實(shí)例 1、$project實(shí)例 db.article.aggregate( { $project : { title : 1 , author : 1 , }} ); 這樣的話結(jié)果中就只還有_id,tilte和author三個(gè)字段了,默認(rèn)情況下_id字段是被包含的,如果要想不包含_id話可以這樣: db.article.aggregate( { $project : { _id : 0 , title : 1 , author : 1 }}); 2.$match實(shí)例 db.articles.aggregate( [ { $match : { score : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } } ] ); $match用于獲取分?jǐn)?shù)大于70小于或等于90記錄,然后將符合條件的記錄送到下一階段$group管道操作符進(jìn)行處理。 3.$skip實(shí)例 db.article.aggregate( { $skip : 5 }); 經(jīng)過$skip管道操作符處理后,前五個(gè)文檔被"過濾"掉。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!
掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信