MongoDB聚合查詢:從入門到精通

文章目錄

  • 前言
  • 一、工具
      • 一般聚合查詢分為四步
  • 二、使用步驟
    • 1.MongoDB Compass
    • 2.Studio 3T
  • 二、舉個栗子
  • 總結


前言

Mongo 聚合查詢

一般用mongo做數據庫,涉及到關聯查詢情況不多,但是還有些情況要使用到,今天就講下如何通過工具做關聯查詢,最終聚合結果,得到最終的查詢結果集;


一、工具

一般使用mongo查詢,我用兩個工具,分別是官網指定工具 MongoDB Compass 和 Studio 3T
下面我將介紹在這兩種工具中如何做關聯查詢 聚合結果

一般聚合查詢分為四步

  • 當前表的查詢條件: $math
  • 關聯表與當前的關聯信息: 關聯表 關聯字段 當前字段 關聯表查詢結果 $lookup
  • 結構關聯表查詢結果: 默認為集合,需要結構為單個對象 $unwind
  • 講當前表和結構的關聯查詢結果屬性拼接 $porject

這就得到了一個最終想要的結果

二、使用步驟

1.MongoDB Compass

  1. 連接好mongo 數據庫
  2. 選中集合
  3. 點擊聚合: Aggregations
  4. 點擊添加 Add Stage
    增加聚合查詢條件
    每次添加應該加的Stage類型,按照順序添加,并設置查詢條件即可

2.Studio 3T

  1. 連接好mongo 數據庫
  2. 選中集合
  3. 點擊聚合: Aggregations
  4. 點擊添加 Add Stage
    增加聚合查詢條件

二、舉個栗子

我想查詢購買記錄,然后關聯查詢出用戶信息,返回用戶名稱

  • 類似的sql如下
select address.*,user.username
form address left join user on user.id= address.publish_by
where address.publish = 1
  • 開始操作,以Studio 3T為例
    分別增加查詢條件
db.getCollection("address").aggregate(// Pipeline[// Stage 1{$match: {// enter query herebuiltin:0}},// Stage 2{$lookup: {from: "user",localField: "publishBy",foreignField: "phone",as: "users"}},// Stage 3{$lookup: {from: "conversation",localField: "code",foreignField: "code",as: "conversations"}},// Stage 4{$unwind: {path: "$users"}},// Stage 5{$project: {// specifications"name":"$name","code":"$code","username":"$users.username","count":{$size:"$conversations"}}}],// Options{}// Created with Studio 3T, the IDE for MongoDB - https://studio3t.com/);

總結

初次之外,Studio 3T還有一個功能,那就是通過sql 直接生成 mongo查詢語句,并且可以直接粘貼代碼
復制代碼

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83944.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

codeup添加流水線docker自動化部署

在項目根目錄下增加Dockerfile文件 # 使用基礎鏡像 FROM maven:3.8.4-openjdk-17-slim AS build # 設置工作目錄 WORKDIR /app # 復制項目源代碼 COPY . . # 構建項目 RUN mvn clean package -DskipTests # 驗證JAR包是否生成 RUN ls -l target/your-project.jar # 使用合適的…

從 Word2Vec 到 BERT:AI 不止是詞向量,更是語言理解

一、前言 在上篇文章中,我們介紹了Word2Vec以及它的作用,總的來說: Word2Vec是我們理解NLP的第一站 Word2Vec將詞變成了“向量”—— 終于可以用機器理解詞語的相似度 我們獲得了例如“國王 - 男人 女人 ≈ 女王” 的類比能力 我們可以將…

鏡像管理(2)Dockerfile總結

一、docker鏡像構建方法 commoit :使用 docker commit 意味著所有對鏡像的操作都是黑箱操作,生成的鏡像也被稱為黑 箱鏡像,換句話說,就是除了制作鏡像的人知道執行過什么命令、怎么生成的鏡像,別人根 本無從得知。而且,即使是這個制作鏡像的人,過一段時間后也無法記清具…

機器學習第十七講:PCA → 把100維數據壓縮成3D視圖仍保持主要特征

機器學習第十七講:PCA → 把100維數據壓縮成3D視圖仍保持主要特征 資料取自《零基礎學機器學習》。 查看總目錄:學習大綱 關于DeepSeek本地部署指南可以看下我之前寫的文章:DeepSeek R1本地與線上滿血版部署:超詳細手把手指南 主…

【Linux庖丁解牛】——進程等待!

1. 進程退出場景 進程退出一般有三種場景: 。代碼運行完畢,結果正確 。代碼運行完畢,結果錯誤【比如,我們要對某個文件進行寫入,但寫入的文件路徑出錯,代碼運行完畢,可是結果出錯】 。代碼異…

鴻蒙OSUniApp 制作簡潔高效的標簽云組件#三方框架 #Uniapp

UniApp 制作簡潔高效的標簽云組件 在移動端應用中,標簽云(Tag Cloud)是一種常見的UI組件,它以視覺化的方式展示關鍵詞或分類,幫助用戶快速瀏覽和選擇感興趣的內容。本文將詳細講解如何在UniApp框架中實現一個簡潔高效的…

ubuntu14.04/16.06 安裝vscode(實測可以用)

地址:https://code.visualstudio.com/updates/v1_38 選擇deb 這個版本還支持ubuntu14.04和16.06 sudo dpkg -i code_1.38.1-1568209190_amd64.deb sudo apt-get install -f安裝成功,正常使用

WebRTC技術EasyRTC音視頻實時通話驅動智能攝像頭邁向多場景應用

一、方案背景? 在物聯網蓬勃發展的當下,智能攝像頭廣泛應用于安防、家居、工業等領域。但傳統智能攝像頭存在視頻傳輸延遲高、設備兼容性差、網絡波動時傳輸不穩定等問題,難以滿足用戶對實時流暢交互視頻的需求。EasyRTC憑借低延遲、高可靠、跨平臺特性…

Java EE進階1:導讀

1.發展歷程 2.學習內容 前?的課程中,學習的是Java基礎,JavaEE主要學習Java的應用,也就是學習Java在企業中是如何應用的 Java更多場景是業務開發,更狹義點可以理解為web開發.所以咱們的學習也是圍繞著如何使用Java來做web開發 2.1 什么是Web開發? web&#xff08…

APPtrace 智能參數系統:重構 App 用戶增長與運營邏輯

一、免填時代:APPtrace 顛覆傳統參數傳遞模式 傳統 App 依賴「邀請碼 / 手動綁定」實現用戶關聯,流程繁瑣導致 20%-30% 的用戶流失。APPtrace 通過 **「鏈接參數自動傳遞 安裝后智能識別」** 技術,讓用戶在無感知狀態下完成關系綁定、場景還…

bisheng系列(一)- 本地部署(Docker)

目錄 一、導讀 二、說明 1、鏡像說明 2、本節內容 三、docker部署 1、克隆代碼 2、運行鏡像 3、可能的錯誤信息 四、頁面測試 1、注冊用戶 2、登陸成功 3、添加模型 一、導讀 環境:Ubuntu 24.04、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景…

docker介紹與常用命令匯總

docker簡介 docker是什么? Docker 是一個開源的應用容器引擎,它可以讓開發者將應用與運行環境打包成一個標準的、可移植的容器(Container),在任何地方都可以快速部署和運行,無需關心底層環境是否一致。 …

Android 中拖拽從一個組件到另外一個組件的寫法(跨容器拖拽)

在 Android 中,拖拽一個圖片(例如 ImageView)到另一個組件(如 LinearLayout、FrameLayout 等容器)涉及以下步驟: 準備工作 源組件:你從哪里開始拖動(如 ImageView)。 目…

火絨互聯網安全軟件:自主引擎,精準防御

在數字時代,網絡安全是每一個用戶都必須重視的問題。無論是個人用戶還是企業用戶,都需要一款高效、可靠的反病毒軟件來保護設備免受惡意軟件的侵害。今天,我們要介紹的 火絨互聯網安全軟件,就是這樣一款由資深工程師主導研發并擁有…

使用亮數據代理IP+Python爬蟲批量爬取招聘信息訓練面試類AI智能體(手把手教學版)

文章目錄 一、為什么要用代理IP?(重要!!!)二、環境準備(三件套走起)2.1 安裝必備庫(pip大法好)2.2 獲取亮數據代理(官網注冊送試用) 三、編寫爬蟲代碼&#x…

Android屏幕采集編碼打包推送RTMP技術詳解:從開發到優化與應用

在現代移動應用中,屏幕采集已成為一個廣泛使用的功能,尤其是在實時直播、視頻會議、遠程教育、游戲錄制等場景中,屏幕采集技術的需求不斷增長。Android 平臺為開發者提供了 MediaProjection API,這使得屏幕錄制和采集變得更加簡單…

互聯網大廠Java求職面試:Spring AI與大模型交互的高級模式與自定義開發

互聯網大廠Java求職面試:Spring AI與大模型交互的高級模式與自定義開發 在當今技術領域,隨著AI和大模型技術的廣泛應用,如何在復雜的系統架構中高效地集成這些技術成為了各大互聯網公司關注的重點。本文將通過一場模擬的面試對話&#xff0c…

MySQL 8.0 OCP 1Z0-908 161-170題

Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…

藍橋杯1447 砝碼稱重

問題描述 你有一架天平和 N 個砝碼,這 N 個砝碼重量依次是 W1,W2,???,WN?。 請你計算一共可以稱出多少種不同的重量? 注意砝碼可以放在天平兩邊。 輸入格式 輸入的第一行包含一個整數 N。 第二行包含 N 個整數:W1,W2,W3,???,WN?…

金融量化智能體,如何開發一個有效的策略?

原創內容第887篇,專注智能量化投資、個人成長與財富自由。 本周重構了網站,升級了最新的回測引擎,以及升級了論壇。 策略年化210%,夏普比3.47,系統源代碼及策略均可下載 年化37.5%,回撤控制在16.8%&…