MongoDB基本操作和使用

MongoDB數據庫

MongoDB簡介

MongoDB是什麼?

MongoDB是一個由 C++ 語言編寫的文檔型數據庫,屬於非關係型數據庫中的一種。旨在爲 Web 應用提供可擴展的高性能數據存儲解決方案。

爲什麼要學習MongoDB?

  1. 提供高效的數據存儲
  2. 操作語法簡單

MongoDB可以做什麼?

  1. 數據存儲

MongoDB和傳統的數據庫有啥區別?

MongoDB是文檔型數據庫,屬於非關係型數據庫中的一種。而傳統的數據庫,例如MySQL、Oracle都是數據關係型數據庫。那麼非關係型數據庫和關係型數據庫有啥區別?

NoSQL RDBMS
非結構化的數據 --> key-value 高度結構化的數據 --> 二維表
無結構化的查詢語言 結構化的查詢語言(SQL)
一般社區維護 官方團隊
較爲年輕 非常成熟

關係型數據庫與mongodb對比

  1. 存儲方面對比:在傳統的關係型數據庫中,存儲方式是以表的形式存放,而在MongoDB中,以文檔的形式存在。

在這裏插入圖片描述

  1. 數據庫中的對應關係,及存儲形式的說明 在這裏插入圖片描述

一些有用的資源

MongoDB入門學習

菜鳥教程-MongoDB

MongoDB安裝和入門使用

MongoDB下載

下載地址:

MongoDB安裝

參考【資料裏面的 MongoDB 安裝教程】

入門使用

MongoDB是一個C/S架構的軟件。如果要使用 MongoDB ,則必須先啓動 MongoDB 服務,然後在通過客戶端進行操作。MongoDB默認在安裝目錄的 bin 目錄下提供了一個 mongo.exe 的客戶端命令,我們可以通過該命令來操作MongoDB。

MongoDB服務啓動: Windows + r 鍵 打開命令行,輸入如下的命令查看MongoDB的服務。

> services.msc

當服務啓動後,則使用 mongo 命令進行操作

> mongo --host 127.0.0.1 --port 27017 

注意:如果是在本機,則可以省略 --host 和 --port

> mongo

總結:通過上面的操作我們基本瞭解了 MongoDB 的功能,接下來我們將學習更多的命令進行 MongoDB 的操作。

命令行操作MongoDB

數據庫常用命令

  • Help 查看命令提示
    獲取數據庫級別的幫組
    > db.help();
    獲取集合級別的幫組
    > db.集合名稱.help();

  • 創建/切換數據庫
    > use dbName;

  • 查詢數據庫
    > show dbs;

  • 顯示當前 DB 狀態
    > db.serverStatus();

  • 查看當前 DB 版本
    > db.version();

  • 查看當前 DB 的鏈接機器IP地址(客戶端IP地址)
    >db.getMongo();

  • 刪除數據庫
    > use 待刪除的數據庫
    > db.dropDatabase();

Collection 聚集集合操作

  • 創建一個聚集集合
    > db.createCollection(集合名稱);

  • 得到當前 db的所有聚集集合
    > show dbs;
    或者
    > show collections;

  • 顯示當前 db 所有聚集的狀態
    > db.集合名稱.stats();

document 文檔操作

  • 插入文檔
    > db.集合名稱.insert(對象或數組);

  • 獲得當前 db 的所有文檔
    > db.集合名稱.find();
    格式化輸出
    > db.集合名稱.find().pretty();

  • 按條件獲取文檔
    > db.集合名稱.find({查詢的Field: 值});

  • 返回滿足條件文檔的指定字段
    > db.集合名稱.find({查詢的Field: 值}, {待顯示的Field: 1, 不顯示的Field: 0});

  • 更新文檔
    db.集合名稱.update({查詢條件}, {$set: {待更新的記錄}});

  • 刪除文檔
    db.集合名稱.remove({刪除條件});

  • 查詢單條文檔
    > db.集合名稱.findOne();

聚合操作

  • 條件操作符

    • (>) 大於 - $
    • gt(<) 小於 - $
    • lt(>=) 大於等於 - $
    • gte(<= ) 小於等於 - $lte
  • 獲取文檔總數
    > db.集合名稱.count();

  • Limit 與 Skip 方法
    > db.集合名稱.find().limit(NUMBER).skip(NUMBER);

  • 排序

    • 可以使用 sort() 方法對數據進行排序,sort() 方法可以通過參數指定排序的字段,並使用 1 和 -1 來指定排序的方式,其中 1 爲升序排列,而 -1 是用於降序排列。

      db.集合名稱.find().sort({排序字段:1})

  • 索引
    > db.users.ensureIndex({gender:1,user_name:1});

  • 查詢分析

    • 查詢分析可以確保我們所建立的索引是否有效,是查詢語句性能分析的重要工具 。
    • 查詢分析常用函數有:explain() 和 hint()
      db.集合名稱.find(查詢條件,顯示字段).explain()
    • indexOnly: 字段爲 true ,表示我們使用了索引。
    • cursor:因爲這個查詢使用了索引,MongoDB 中索引存儲在B樹結構中,所以這是也使用了
    • BtreeCursor 類型的遊標。如果沒有使用索引,遊標的類型是 BasicCursor。這個鍵還會給出你所使用的索引的名稱,你通過這個名稱可以查看當前數據庫下的system.indexes集合(系統自動創建,由於存儲索引信息,這個稍微會提到)來得到索引的詳細信息。
    • n:當前查詢返回的文檔數量。
    • nscanned/nscannedObjects:表明當前這次查詢一共掃描了集合中多少個文檔,我們的目的是,讓這個數值和返回文檔的數量越接近越好。
    • millis:當前查詢所需時間,毫秒數。
    • indexBounds:當前查詢具體使用的索引

Robo3T 使用

Robo3T 是什麼?

Robo 3T是一個支持windows、Mac、Linux三個平臺的mongo圖形化客戶端 。

官網:https://robomongo.org/

爲什麼要使用 Robo3T?

命令行工具操作MongoDB效率太低,所以使用圖形化操作。

Robo3T的使用

  1. 安裝
  2. 基本使用

Mongoose 操作 Mongodb

Mongoose 是什麼?

Mongoose是一個對mongodb進行便捷操作的js工具包。

Mongoose 的使用

  1. 安裝
  2. 使用

代碼託管和webserver和apiserve部署

代碼部署

webserver部署

apiserver部署

日常疑問?

  1. 常見的MongoDB可視化客戶端有哪些?
  2. MongoDB登錄授權處理該如何實現?

擴展

  1. studio 3t 和 robo 3t 之間有啥區別:https://www.oschina.net/p/robo+3t
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章