【MongoDB】MongoDB從零開始詳細教程 核心概念與原理 環境搭建 基礎操作

MongoDB從零開始詳細教程 核心概念與原理 環境搭建 基礎操作

  • 一、核心概念與原理
    • 1. 核心組件
    • 2. MongoDB vs 關系型數據庫
  • 二、環境搭建(Windows/Linux/CentOS)
    • 1. Windows安裝
    • 2. CentOS安裝
    • 3. 連接驗證
  • 三、基礎操作(CRUD)
    • 1. 數據庫與集合操作
    • 2. 文檔增刪改查
  • 四、高級特性與優化
    • 1. 索引優化
    • 2. 聚合管道(Aggregation)
    • 3. 分片集群與副本集
  • 五、編程語言集成(Node.js/Python)
    • 1. Node.js操作MongoDB
    • 2. Python操作MongoDB(PyMongo)
  • 六、運維與監控
    • 1. 備份與恢復
    • 2. 性能監控命令
    • 3. 安全配置
  • 學習路徑

一、核心概念與原理

1. 核心組件

概念作用類比關系型數據庫
文檔(Document)數據存儲基本單元,采用BSON格式(如JSON)表中的一行數據
集合(Collection)文檔的容器,無需固定結構(Schema-less)數據表(Table)
數據庫(Database)多個集合的命名空間容器數據庫(Database)

2. MongoDB vs 關系型數據庫

特性MongoDBMySQL
數據結構靈活(動態Schema)固定結構(需預定義字段)
擴展方式水平擴展(分片集群)垂直擴展(升級硬件)
查詢語言類JavaScript語法SQL
適用場景非結構化數據、快速迭代、高并發讀寫強事務、復雜關聯查詢

BSON優勢:二進制JSON,支持日期、二進制流等類型,存儲效率高于JSON。


二、環境搭建(Windows/Linux/CentOS)

1. Windows安裝

# 1. 官網下載MSI安裝包(社區版)
# 2. 勾選"Install as Service"(自動注冊為系統服務)
# 3. 配置環境變量:添加 `C:\Program Files\MongoDB\Server\7.0\bin` 到PATH
# 4. 啟動服務:`net start MongoDB` 或命令行 `mongod --dbpath D:\mongo_data`

2. CentOS安裝

# 1. 創建數據目錄并授權
sudo mkdir -p /data/db
sudo chown -R mongodb:mongodb /data/db# 2. 通過YUM安裝
sudo yum install -y mongodb-org# 3. 啟動服務
sudo systemctl start mongod

3. 連接驗證

mongo  # 進入Shell
> db.version()  # 查看版本
> show dbs      # 顯示所有數據庫

三、基礎操作(CRUD)

1. 數據庫與集合操作

use testdb                  // 創建/切換數據庫(插入數據后生效)
db.createCollection("users") // 顯式創建集合
db.users.drop()              // 刪除集合
db.dropDatabase()            // 刪除當前數據庫(需先use目標庫)

2. 文檔增刪改查

// 插入文檔
db.users.insertOne({name: "Alice", age: 25})
db.users.insertMany([{name: "Bob"}, {name: "Charlie"}])// 查詢文檔
db.users.find()                          // 查詢所有
db.users.find({age: {$gt: 20}})         // 條件查詢(age>20)
db.users.findOne({name: "Alice"})        // 查詢單條// 更新文檔
db.users.updateOne({name: "Alice"}, {$set: {age: 26}})  // 更新單條
db.users.updateMany({}, {$inc: {age: 1}})               // 所有文檔age+1// 刪除文檔
db.users.deleteOne({name: "Bob"})
db.users.deleteMany({age: {$lt: 18}})

四、高級特性與優化

1. 索引優化

索引類型創建命令適用場景
單鍵索引db.users.createIndex({age: 1})頻繁按age查詢
復合索引db.users.createIndex({name:1, age:-1})多字段排序或條件查詢
TTL索引db.logs.createIndex({time:1}, {expireAfterSeconds:3600})自動清理過期數據(如日志)

2. 聚合管道(Aggregation)

// 統計各年齡段用戶數量
db.users.aggregate([{ $group: { _id: "$age", count: {$sum: 1} }},{ $sort: {count: -1} }
])

3. 分片集群與副本集

  • 副本集:一主多從架構,主節點處理寫請求,從節點提供讀負載均衡,自動故障轉移。
  • 分片集群:通過分片鍵(如user_id)將數據分布到多臺機器,解決海量數據存儲問題。

五、編程語言集成(Node.js/Python)

1. Node.js操作MongoDB

const { MongoClient } = require('mongodb');
const uri = "mongodb://localhost:27017";async function run() {const client = new MongoClient(uri);await client.connect();const db = client.db('testdb');const users = db.collection('users');// 插入文檔await users.insertOne({ name: "Eva", role: "admin" });// 查詢文檔const result = await users.find({ role: "admin" }).toArray();console.log(result);
}
run();

2. Python操作MongoDB(PyMongo)

from pymongo import MongoClientclient = MongoClient('mongodb://localhost:27017')
db = client['testdb']
users = db['users']# 批量插入
users.insert_many([{"name": "Tom", "score": 85},{"name": "Jerry", "score": 92}
])# 范圍查詢
results = users.find({"score": {"$gt": 90}})
for doc in results:print(doc)

六、運維與監控

1. 備份與恢復

# 備份整個數據庫
mongodump --db testdb --out /backup/# 恢復數據庫
mongorestore --db testdb /backup/testdb/

2. 性能監控命令

db.serverStatus()      # 查看服務器狀態
db.currentOp()         # 查看當前操作
db.stats()             # 數據庫統計信息

3. 安全配置

# 啟用身份驗證(在mongod.conf中添加)
security:authorization: enabled# 創建管理員
use admin
db.createUser({user: "admin",pwd: "password",roles: ["root"]
})

學習路徑

  1. 新手階段:掌握CRUD操作 + 理解BSON文檔模型
  2. 進階方向:
    • 索引設計優化(避免全表掃描)
    • 聚合管道處理復雜分析
    • 分片集群應對海量數據
  3. 生產實踐:
    • 副本集保障高可用
    • 編程語言集成(Node.js/Python優先)

官方資源:
- MongoDB中文手冊
- MongoDB中文社區
工具推薦:
- 可視化工具:MongoDB Compass
- 性能分析:mongostat、mongotop
按此路徑學習,可逐步從入門到精通,應對企業級應用開發與運維需求。

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

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

相關文章

GeoTools 結合 OpenLayers 實現屬性查詢

前言 在GIS開發中,屬性查詢是非常普遍的操作,這是每一個GISer都要掌握的必備技能。實現高效的數據查詢功能可以提升用戶體驗,完成數據的快速可視化表達。 本篇教程在之前一系列文章的基礎上講解如何將使用GeoTools工具結合OpenLayers實現Post…

vue-27(實踐練習:將現有組件重構為使用組合式 API)

實踐練習:將現有組件重構為使用組合式 API 理解重構過程 重構是任何開發者的關鍵技能,尤其是在采用新范式如 Vue.js 中的 Composition API 時。它涉及在不改變外部行為的情況下重新組織現有代碼,旨在提高可讀性、可維護性和可重用性。在從 Options API 遷移到 Composition…

基于Uniapp+SpringBoot+Vue 的在線商城小程序

開發系統:Windows10 架構模式:MVC/前后端分離 JDK版本: Java JDK1.8 開發工具:IDEA 數據庫版本: mysql8.0 數據庫可視化工具: navicat 服務器: SpringBoot自帶 apache tomcat 主要技術: Java,Springboot,mybatis,mysql,jquery,html,vue 角色:用戶 商家 管理員 用戶菜單:首頁:商…

華為云Flexus+DeepSeek征文|利用華為云一鍵部署的Dify平臺構建高效智能電商客服系統實戰

目錄 前言 1 華為云快速搭建 Dify-LLM 應用平臺 1.1 一鍵部署簡介 1.2 設置管理員賬號登錄dify平臺 2 接入 DeepSeek 大模型與 Reranker 模型 2.1 接入自定義 LLM 模型 2.2 設置 Reranker 模型 3 構建電商知識庫 3.1 數據源選擇 3.2 分段設置與清洗 3.3 處理并完成 …

python應用day07---pyechars模塊詳解

1.pyecharts安裝: pip install pyecharts 2.pyecharts入門: # 1.導入模塊 from pyecharts.charts import Line# 2.創建Line對象 line Line() # 添加數據 line.add_xaxis(["中國", "美國", "印度"]) line.add_yaxis("GDP數據", [30…

高檔背景色

https://andi.cn/page/622250.html

教學視頻畫中畫播放(PICTURE-IN-PICTURE)效果

視頻平臺的畫中畫(PIP)功能通過小窗播放提升用戶體驗:1)支持多任務處理,如邊看教程邊操作文檔;2)減少應用跳出率,增強用戶粘性;3)優化屏幕空間利用&#xff1…

MySQL (一):數據類型,完整性約束和表間關系

在當今數據驅動的時代,數據庫作為數據存儲與管理的核心工具,其重要性不言而喻。MySQL 作為一款廣泛應用的開源數據庫,憑借其高性能、高可靠性和豐富的功能,深受開發者喜愛。本文作為 MySQL 系列博客的開篇,將帶你深入了…

【軟考高項論文】信息系統項目的資源管理

摘要 本文圍繞信息系統項目的資源管理展開論述。首先闡述了項目資源管理的基本過程,包括資源規劃、估算、獲取、配置、監控和釋放等關鍵步驟,并給出資源分解結構示例。接著結合2024年參與管理的某信息系統項目實際情況,詳細說明資源管理的具…

阿里云Ubuntu服務器上安裝MySQL并配置遠程連接

1. 安裝MySQL 首先連接到你的Ubuntu服務器,然后執行: # 更新軟件包列表 sudo apt update# 安裝MySQL服務器 sudo apt install mysql-server# 啟動MySQL服務 sudo systemctl start mysql# 設置MySQL開機自啟 sudo systemctl enable mysql# 檢查MySQL狀態…

STM32HAL 旋轉編碼器教程

配置時鐘編碼模式讀取方法: if(__HAL_TIM_IS_TIM_COUNTING_DOWN(&htim1) 0){count - __HAL_TIM_GET_COUNTER(&htim1);}else{count __HAL_TIM_GET_COUNTER(&htim1);}bsp_dtUInt32_show(count);__HAL_TIM_SET_COUNTER(&htim1, 0); 通過 __HAL_TIM…

激光束修復手機屏任意層不良區域,實現液晶線路激光修復原理

摘要 手機屏結構多層復合,任意層線路不良嚴重影響顯示質量。激光束憑借高能量密度與可調控性,能夠穿透不同介質精準作用于目標層。本文基于激光與多層材料相互作用機制,解析激光束對手機屏各層不良區域的修復原理,為全層液晶線路…

【軟件開發】架構與架構師

文章目錄 一、前言二、關于系統架構1. 保障用戶訪問速度2. 支持大規模并發請求3. 應對復雜業務邏輯4. 應對海量數據的存儲與讀寫三、關于系統架構師四、關于安全架構1. 產品安全架構2. 安全體系架構五、關于安全架構師一、前言 在系統建設與技術架構實踐不斷推進的背景下,關于…

Blender速成班-基礎篇2

視頻教程:【第一章】基礎操作_嗶哩嗶哩_bilibili 目錄 編輯模式 1.1側邊屬性 擠出選區——E 擠出方式選擇——AltE ?編輯 內插面——I 倒角——CtrlB 環切——CtrlR 旋繞 本片繼續基于視頻教程介紹Blender的一些基礎操作 勾選Cavity使物體邊線更清晰 編…

對象進階與擴展

目錄 創建對象 Object.create() 原型 原型操作 原型污染 對象屬性 屬性特征 枚舉屬性 Object.keys() Object.getOwnPropertyNames() Object.getOwnPropertyDescriptor() O…

理解圖像的隨機噪聲

圖像灰度信息很難精確測量,一般情況下測量值總在真實值附近晃動,使用概率模型可以對該隨機性建模,大致如下: 1 概率密度函數 1)隨機變量 x 的概率密度函數 p(x) 定義為:當 趨近于 0 時,在區間 上…

華為云鏡像倉庫下載 selenium/standalone-chrome 鏡像

你可以使用以下步驟從華為云鏡像倉庫下載 selenium/standalone-chrome 鏡像&#xff1a; 1. 登錄華為云鏡像倉庫&#xff08;如果需要認證&#xff09; bash sudo docker login -u <用戶名> -p <密碼> swr.cn-north-4.myhuaweicloud.com 如果沒有華為云賬號&…

Push-T, AloHa, Rlbench三個仿真環境信息

1.Push-T 很好兄弟&#xff0c;你問得很關鍵&#xff1a;你給我的三段代碼其實是一套完整的推理錄像 pipeline&#xff0c;它們之間既有獨立功能&#xff0c;又有順序依賴關系。我來幫你分段解釋&#xff0c;每段是什么功能、三段之間怎么配合&#xff0c;讓你徹底搞明白。 &a…

Linux信號機制:從入門到精通

嘿&#xff0c;小伙伴們&#xff01;今天我要和大家聊一個Linux系統中非常有趣又重要的話題——信號機制。別擔心&#xff0c;雖然信號聽起來有點高深&#xff0c;但我會用最通俗易懂的語言&#xff0c;配合清晰的圖表&#xff0c;帶你徹底搞懂這個概念&#xff01; 什么是信號…

Vue3項目引入高德地圖【超詳細教程】

前言 在 Vue 3 項目中集成高德地圖&#xff08;AMap&#xff09;是一個常見的需求。本文將詳細介紹如何在 Vue 3 項目中使用高德地圖&#xff0c;包括安裝配置、基本使用以及一些進階功能的實現。 一、環境準備 1.1 vue3項目初始化 步驟 1&#xff1a;初始化項目 npm crea…