mongodb nosql數據庫筆記

MongoDB 簡介

MongoDB 是一個開源的 NoSQL 數據庫,采用文檔存儲模型(BSON 格式,類似 JSON),支持高靈活性、水平擴展和高性能的數據操作。與傳統關系型數據庫(如 MySQL)不同,MongoDB 無需預定義表結構,適合處理半結構化或非結構化數據。


MongoDB 核心特性

文檔模型
數據以文檔形式存儲,每個文檔包含鍵值對,嵌套結構支持復雜數據類型。示例文檔:

{"_id": ObjectId("507f191e810c19729de860ea"),"name": "Alice","age": 30,"address": {"city": "New York","zip": "10001"}
}

高性能
支持索引、聚合管道和內存映射文件,讀寫速度快。

// 創建索引
db.users.createIndex({ name: 1 });

水平擴展(分片)
通過分片(Sharding)將數據分布到多個服務器,支持海量數據存儲。

高可用性
副本集(Replica Set)提供自動故障轉移和數據冗余。


基礎操作

插入數據

db.users.insertOne({name: "Bob",age: 25,hobbies: ["reading", "hiking"]
});

查詢數據

// 查找所有年齡大于 20 的用戶
db.users.find({ age: { $gt: 20 } });// 使用聚合管道分組統計
db.users.aggregate([{ $group: { _id: "$city", count: { $sum: 1 } } }
]);

更新數據

db.users.updateOne({ name: "Bob" },{ $set: { age: 26 } }
);

刪除數據

db.users.deleteOne({ name: "Alice" });

適用場景

  1. 實時分析:快速處理日志、傳感器數據等時序數據。
  2. 內容管理:靈活存儲文章、評論等嵌套內容。
  3. 物聯網(IoT):高效存儲設備生成的異構數據。
  4. 移動應用:支持離線同步和靈活的數據模型變更。

不適用場景

  1. 復雜事務:需跨文檔強一致性時(盡管 MongoDB 4.0+ 支持多文檔事務,但性能受限)。
  2. 高度結構化數據:固定表結構且關系復雜的場景(如財務系統)。

安裝與工具

  1. 官方下載:從 MongoDB官網 獲取社區版。
  2. 命令行工具mongosh(MongoDB Shell)。
  3. GUI工具:MongoDB Compass、Robo 3T。

性能優化建議

  1. 合理設計索引,避免全表掃描。
  2. 使用投影(Projection)限制返回字段。
  3. 分片鍵選擇需均勻分布數據。
  4. 監控慢查詢日志(db.setProfilingLevel(2))。
// 查看慢查詢
db.system.profile.find().sort({ millis: -1 }).limit(10);

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

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

相關文章

Flutter實現不規則瀑布流布局拖拽重排序

因為業務,所以需要用flutter去實現一種不規則圖形的瀑布流,但是同時需要支持拖拽并重新排序。效果類似如下。 查詢過現有的插件,要么是僅支持同樣大小的組件進行排序,要么就是動畫效果不是很滿意,有點死板,…

微信小程序(uniapp)實現騰訊云 IM 消息撤回

uniapp 實現騰訊云 IM 消息撤回功能實戰指南 一、功能實現原理 騰訊云 IM 的消息撤回功能通過 消息修訂(Message Revision) 機制實現,核心流程如下: 發送方調用撤回 API 刪除指定消息云端生成撤回通知消息(類型為 T…

AI入門示例

市面上有很多AI大模型,這里以 智譜的大模型 為示例 1.先要注冊智譜AI開放平臺 2.注冊成功后,會贈送3個月的免費額度,如下 3.然后去控制臺,創建一個API KEY 4.接著就可以開始寫代碼了 提前導入包: openai 示例1&…

【數據結構】單鏈表練習

1.鏈表的中間節點 https://leetcode.cn/problems/middle-of-the-linked-list/description/ 用快慢指針來解決 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* middleNode(struct ListNode* he…

嘗鮮純血鴻蒙,華為國際版本暫時不支持升級。如mateX6 國際版?為什么不支持?什么時候支持?

一:mateX6 國際版支持鴻蒙嗎? 不支持 二:華為國際版支持鴻蒙嗎? 不支持 三:華為國際版什么時候支持? 2025年預期可以支持。請耐心等待。 三:國際版為什么不支持? EMUI 采用AO…

Spring Boot的啟動流程,以及各個擴展點的執行順序

目錄 1. 初始化階段執行順序 1.1 Bean的構造方法(構造函數) 1.2 PostConstruct 注解方法 1.3 InitializingBean 的 afterPropertiesSet() 1.4 Bean(initMethod "自定義方法") 2. 上下文就緒后的擴展點 2.1 ApplicationContext 事件監聽…

刀具問題討論

1 刀具的問題概述 問題描述 一道工序用自動化車床連續加工某種零件,由于刀具損壞等原因該工序會出現故障,其中刀具損壞故障占95%, 其它故障僅占 5%。工序出現故障是完全隨機的, 假定在生產任一零件時出現故障的機會均相同。工作人員通過檢查零件來確定…

vite配置一個css插件

vite.config.js的plugins執行函數 該例子只是替換一些css,具體內容不重要,主要看形參的運用 // vite-plugin-css.js export default function cssPlugin() {return {name: vite-plugin-css-post, // 插件的名字,Vite 插件必須有名字enforce: post, // 設定插件執…

?1.1.1 按位與運算替代求余運算優化場景

在計算機編程中,使用按位與運算(&)替代求余運算(%)可以提高效率的特殊場景是:當除數是 2 的整數次冪(即 ( b 2^n ),其中 ( n ) 為自然數)時。例如,( b …

CentOS 7 環境中部署 LNMP(Linux + Nginx + MySQL 5.7 + PHP)

在 CentOS 7 環境中部署 LNMP(Linux Nginx MySQL 5.7 PHP) 環境的詳細步驟如下。此方案確保各組件版本兼容,并提供完整的配置驗證流程。 1. 更新系統 sudo yum update -y 2. 安裝 MySQL 5.7 2.1 添加 MySQL 官方 YUM 倉庫 由于MySQL并不…

UniApp微信小程序自定義導航欄實現

UniApp微信小程序自定義導航欄 在UniApp開發微信小程序時,頁面左上角默認有一個返回按鈕(在導航欄左側),但有時我們需要自定義這個按鈕的樣式和功能,同時保持與導航欄中間的標題和右側膠囊按鈕(藥丸屏&…

Java大師成長計劃之第35天:未來展望與個人總結

引言 作為一門歷史悠久的編程語言,Java自1995年問世以來,經歷了多個版本的迭代與演進,依然在當今技術生態中占據著重要地位。從早期的Java SE、Java EE到后來的Java Spring框架,再到現代的微服務架構與云原生應用,Jav…

Ubuntu開機自動運行Docker容器中的Qt UI程序

Ubuntu開機自動運行Docker容器中的Qt UI程序 引言為什么需要這樣配置?解決方案概覽詳細實現步驟1. 創建容器啟動腳本2. 創建系統服務3. 配置自動登錄和顯示設置常見問題解決方案1. 程序無法顯示(X11權限問題)2. 分辨率設置不生效3. 服務啟動失敗安全注意事項結語附錄:完整文…

Scratch節日 | 龍舟比賽 | 端午節

端午節快樂! 這款專為孩子們打造的Scratch游戲——《龍舟比賽》,讓你在掌控龍舟的競速中,沉浸式體驗中華傳統節日的魅力! 🎮 游戲亮點 節日氛圍濃厚:化身龍舟選手,在波濤洶涌的河流中展開刺激競…

(五)MMA(OpenTelemetry/Rabbit MQ/ApiGateway/MongoDB)

文章目錄 項目地址一、OpenTelemetry1.1 配置OpenTelemetry1. 服務添加2. 添加服務標識3. 添加請求的標識4. 添加中間價 二、Rabbit MQ2.1 配置Rabbit MQ1. docker-compose2. 添加Rabbit MQ的Connect String 2.2 替換成Rabbit MQ1. 安裝所需要的包2. 使用 三、API Gateways3.1 …

格恩朗超聲波水表 助力農業精準灌溉與振興?

在農業現代化的征程中,水資源的精準利用至關重要,而這離不開高精度計量設備的支持。大連格恩朗品牌積極響應國家全面推進鄉村振興、加快農業農村現代化的號召,精心打造的超聲波水表,憑借其超高精度,成為綠色灌溉領域的…

微信小程序頁面嵌套web-view點擊系統導航返回時進行彈窗處理

實現效果:微信小程序頁面嵌套web-view點擊系統導航返回時進行彈窗處理 首先在web-view里是不可實現的(據我了解下來) 參考小程序文檔:page-container 大致邏輯: 1、page-container可實現頁面離開前攔截 2、由于web-vie…

設計模式25——中介者模式

寫文章的初心主要是用來幫助自己快速的回憶這個模式該怎么用,主要是下面的UML圖可以起到大作用,在你學習過一遍以后可能會遺忘,忘記了不要緊,只要看一眼UML圖就能想起來了。同時也請大家多多指教。 中介者模式(Mediat…

Java基礎 Day25

一、線程通信 1、簡介 確保線程能夠按照預定的順序執行并且能夠安全地訪問共享資源 使多條線程更好的進行協同工作 2、常用方法 void wait() 使當前線程進入等待狀態 void notify(); 隨機喚醒單個等待的線程(可以空喚醒) void notifyAll(); 喚醒…

WebSocket與實時對話式AI服務的集成

WebSocket與實時對話式AI服務的集成 在現代對話式AI系統中,傳統的HTTP請求-響應模型已難以滿足實時交互的體驗需求。特別是用戶對響應速度、逐字輸出、會話上下文保持等方面提出更高要求時,需要一種能夠建立持久連接并支持雙向通信的協議。WebSocket正是在這一背景下,成為A…