无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

一個聚合,三張報表,MongoDB的`$facet`值得用嗎?

0
分享至

同一個支付數據集,你想同時看到各渠道收入、整體營收和最新到賬記錄。是跑三次聚合,還是只跑一次?

先從堅持單一職責的人說起。他們認為,每個查詢就該只返回一類結果,邏輯清晰、維護方便。按支付方式匯總,就寫一個分組聚合;求總營收,再起一條帶計數的流水線;拉最近10筆訂單,再單獨跑一趟。三條語句,互不干擾,日后單獨調優也沒顧慮。


但另一派覺得,三次請求意味著三趟全表掃描、三次網絡往返,即便加了過濾條件和索引,依然浪費資源。MongoDB從4.2版起提供的`$facet`,就是為這種場景設計的:在一個聚合階段的同一個輸入文檔集合上,并行跑多條子管道,一次返回多個結果。

`$facet`的思路更像一份打包的批量作業。你先把共同的篩選做完,比如只取已支付記錄,再把這批文檔同時塞給三組子管道,每組只負責算自己的那一部分。官方文檔把它描述成“在一個階段中對相同的輸入文檔運行多個聚合管道”,與寫多次獨立查詢相比,它節省了重復讀盤和計算。

是否真的更好,得拿真實例子拆開看。假設一個`payments`集合,文檔長這樣:

{ amount: 120, method: "card", currency: "USD", status: "paid", paidAt: "2026-05-20T10:30:00Z" }

需求很樸素:需要一個小報表,分別給出各支付方式收入、全部收入匯總以及最近幾條已付記錄。所有答案都來自同一個集合,這正是`$facet`能發揮的地方。

第一步先用`$match`過濾:{ $match: { status: "paid" } },只保留已付款項。這一步放在`$facet`之前,能讓后續所有分支都基于干凈的輸入,避免在每個子管道里重復篩選。

然后加入`$facet`階段,內部定義三個子管道:byMethodrevenueSummarylatestPayments。它們共享同一批已付文檔,卻回答完全不同的問題。

byMethod分支的任務是按支付方式統計。它對`$method`字段分組,累加每組的金額總和,并計數各組的文檔數。這樣就不必逐條看明細,而是直接得到卡片、銀行轉賬、PayPal等渠道各自的表現。

revenueSummary分支負責整體指標。它計算整個已付集合的總收入、訂單總數以及平均每筆金額。之后用`$project`只保留需要的數字字段,剔除內部計算產生的中間值,保持輸出簡潔。

latestPayments分支關注最新數據。它先按`paidAt`倒序排列,最新的記錄排在最前面,然后只截取前幾條。原文的建議是“keeps only a few result”,實踐中通常通過`$limit`來實現,得到最近幾筆付款的完整信息。

這樣,一次數據庫請求就把三項結果一起返回,應用層直接拼裝報表、儀表板或篩選面板。少了兩次請求的開銷,流水線里的公共過濾階段也只需執行一次。

但話說回來,`$facet`也有邊界。它的所有子管道共享內存限制,復雜度過高的分支可能彼此影響性能。如果某個分支需要掃描巨量數據并做深度轉換,拆成獨立聚合反而更可控。因此,是否使用`$facet`,取決于分支之間的耦合度和資源爭用。

在VisuaLeaf這類可視化工具里,可以直觀地看到數據在`$match`之后發生分流,再一步步構建子管道,預覽每個階段的結果。這讓`$facet`的調試不再抽象——只需觀察分流點的文檔,確認分支邏輯是否符合預期。

綜合來看,當一堆查詢共享同一份過濾后的輸入,且返回結果集不大、流水線步驟相對輕量時,`$facet`是讓聚合更緊湊、網絡往返更少的好選擇。它把“多個結果”的內在依賴關系顯式化,反而讓整體意圖更清晰。但也無需用它替換所有多查詢場景,衡量好分支間的耦合與單次內存開銷,才能做出合理判斷。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
被國民黨放鴿子?美國智庫主席嗆:愚蠢的民進黨散布不實消息

被國民黨放鴿子?美國智庫主席嗆:愚蠢的民進黨散布不實消息

海峽導報社
2026-05-30 08:26:09
老板聚餐沒喊我,我到點關機下班,第二天,老板:你這是在搞事啊

老板聚餐沒喊我,我到點關機下班,第二天,老板:你這是在搞事啊

千秋文化
2026-05-28 19:34:31
我們為什么總在廢墟上建造新的神像?

我們為什么總在廢墟上建造新的神像?

浪子說
2026-05-18 09:28:30
發現一家全球級行業龍頭,就在重慶

發現一家全球級行業龍頭,就在重慶

渝魯大道
2026-05-28 19:06:46
搞大了!農機手受邀到湖北搶收夏糧,3000元爬梯被偷,不配合調查

搞大了!農機手受邀到湖北搶收夏糧,3000元爬梯被偷,不配合調查

漢史趣聞
2026-05-30 09:21:17
為什么印度就算頂著50℃高溫,也要抵制中國空調?

為什么印度就算頂著50℃高溫,也要抵制中國空調?

周哥一影視
2026-05-30 20:33:39
朝鮮在俄陣亡2300人,烏軍卻未找到一具尸體!這才是烏軍厲害之處

朝鮮在俄陣亡2300人,烏軍卻未找到一具尸體!這才是烏軍厲害之處

阿訊說天下
2026-05-01 09:47:47
不愧是山姆斷貨王!!真的好好吃

不愧是山姆斷貨王!!真的好好吃

廣州生活美食圈
2026-05-28 20:53:06
5月30日,2026年養老金調整通知公布了嗎?尤其這兩點挺重要的

5月30日,2026年養老金調整通知公布了嗎?尤其這兩點挺重要的

社保小達人
2026-05-30 09:02:12
大定破2萬!余承東:全新M9是地球上最強SUV,沒有之一!網友:廣告法能不能管管他

大定破2萬!余承東:全新M9是地球上最強SUV,沒有之一!網友:廣告法能不能管管他

大白聊IT
2026-05-28 21:21:39
尷尬了,姆巴佩離隊后巴黎歐冠兩連冠,而皇馬連續止步八強

尷尬了,姆巴佩離隊后巴黎歐冠兩連冠,而皇馬連續止步八強

懂球帝
2026-05-31 03:25:25
文旅項目陷“倒閉潮”,花20億打造的古城,游客不買賬虧損超10億

文旅項目陷“倒閉潮”,花20億打造的古城,游客不買賬虧損超10億

怪味歷史連連看
2026-05-30 23:15:16
竇驍媽媽比何超蓮媽媽的氣質還要好,竇驍養成如此性格是有原因的

竇驍媽媽比何超蓮媽媽的氣質還要好,竇驍養成如此性格是有原因的

阿廢冷眼觀察所
2026-05-30 15:37:57
醫生:再嚴重的糖尿病,沒有這3個表現,不必過度擔憂,照常飲食

醫生:再嚴重的糖尿病,沒有這3個表現,不必過度擔憂,照常飲食

寶哥精彩賽事
2026-05-30 19:49:01
溫格:曾經我們離歐冠冠軍就差13分鐘,希望這次塔帥能完成任務

溫格:曾經我們離歐冠冠軍就差13分鐘,希望這次塔帥能完成任務

懂球帝
2026-05-30 19:57:13
撕開畫皮!秦腔皇后淪為泄欲工具,戲臺下的她比戲里更慘

撕開畫皮!秦腔皇后淪為泄欲工具,戲臺下的她比戲里更慘

小影的娛樂
2026-05-28 09:31:19
七年統治夢碎!烏克蘭民眾曾親手選出的總統,終將國家拖入深淵?

七年統治夢碎!烏克蘭民眾曾親手選出的總統,終將國家拖入深淵?

離離言幾許
2026-05-31 00:17:40
人過了七十歲,生命的意義僅剩兩件事,可惜很少有人明白

人過了七十歲,生命的意義僅剩兩件事,可惜很少有人明白

蟬吟槐蕊
2026-05-30 16:18:17
耿同學再打四杰青!湘雅院長雷光華被錘!候選院士還有戲嗎?

耿同學再打四杰青!湘雅院長雷光華被錘!候選院士還有戲嗎?

大江看潮
2026-05-29 10:17:42
多名院士研究發現:吃一根香蕉,就等于給血脂添一次堵,真的假的

多名院士研究發現:吃一根香蕉,就等于給血脂添一次堵,真的假的

健康科普365
2026-05-30 19:20:07
2026-05-31 04:36:49
算力游俠
算力游俠
游走在API與報錯之間,用魔法(AI)打敗魔法的非硬核玩家。
4270文章數 34關注度
往期回顧 全部

科技要聞

車圈大佬發聲:價格戰遠去,但競爭仍殘酷

頭條要聞

兩名9歲女孩被困電梯近2小時 求救幾十次物業無動于衷

頭條要聞

兩名9歲女孩被困電梯近2小時 求救幾十次物業無動于衷

體育要聞

巴黎再度捧起歐冠獎杯 槍手眾將黯然神傷

娛樂要聞

張碧晨《歌手》 “活人微死” 自嘲

財經要聞

雙匯管不住一頭豬

汽車要聞

900V+3.2秒破百 領克10+&領克10上市16.99萬元起

態度原創

本地
親子
教育
家居
房產

本地新聞

用剪紙的方式,打開江蘇揚州

親子要聞

來一次說走就走,開啟寶寶人生首次遠行,去見不一樣的風景

教育要聞

帕德逼近:導數中無敵般的存在

家居要聞

云棲 舒展如流云

房產要聞

紅動五月!全國搶入核心資產,廣州盯緊凱旋新世界!

無障礙瀏覽 進入關懷版