Mongodb 安裝詳解

關於

今天第一次學習mongodb 遇到很多困難, 網上看了很多博客,發現解決方案都不是很好, 可能是比較菜 嘻嘻 一開始連什麼是Mongodb 都不知道,而博客是會告訴我怎麼安裝,這搞得我很被動,一臉茫然,所以今天我就來寫篇博客讓大家都能瞭解 Mongodb ,如果覺得對你有一定幫助,就請大佬關注一下子,這是對我最大的肯定謝謝啦!

什麼是MongoDB

在這裏插入圖片描述

  • MongoDB是一個基於分佈式文件存儲 [1] 的數據庫。由 C++ 語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
  • MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。它支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。Mongo最大的特點是它支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
1. 從上面我們知道 MongoDB 是用 C++ 編寫的
2. MongoDB 的數據結構和json差不多 
3. MongoDB是一款爲web應用程序和互聯網基礎設施設計的數據庫管理系統

如果還不明白我們來看一副概念圖,他和普通數據庫的區別幫助你更容易理解MongoDB 的概念

SQL術語/概念 MongoDB術語/概念 解釋/說明
database database 數據庫
table collection 數據庫表/集合
row document 數據記錄行/文檔
column field 數據字段/域
index index 索引
table joins 表連接,MongoDB不支持
primary key primary key 主鍵,MongoDB自動將_id字段設置爲主鍵

通過下圖實例,我們也可以更直觀的瞭解Mongo中的一些概念:

在這裏插入圖片描述

面試題

以下是我在面試,收集到的MongoDB面試題

  • 你說的NoSQL數據庫是什麼意思?
  • NoSQL與RDBMS直接有什麼區別?
  • 爲什麼要使用和不使用NoSQL數據庫?
  • 說一說NoSQL數據庫的幾個優點?
  • MongoDB成爲最好NoSQL數據庫的原因是什麼?
  • 名字空間(namespace)是什麼?
  • 如果用戶移除對象的屬性,該屬性是否從存儲層中刪除?
  • 什麼是master或primary?
答案 :建議大家自己去百度,這樣記得更牢固,

下載和安裝MongoDB

爲了方便大家下載這裏準備兩種下載方式

網盤: 網盤點擊這裏 密碼 ctyy
官網下載
在這裏插入圖片描述點擊DOWNLOAD按鈕,開始下載
不過值得注意的是,上次測試了最新版本,在官網下載安裝之後沒有mongo.exe和mongod.exe

因此我又卸載了官網版本,使用解壓包重新安裝,解壓包版本如下:
在這裏插入圖片描述有興趣的話還是可以從官網下載,然後觀察下差異
安裝過程一路Click Next然後 Click Install 等安裝完成即可,下圖安裝路徑,建議自定義一下,不推薦安裝到系統盤
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述安裝完成

二:配置使用

  1. 創建幾個文件夾具體如下:數據庫路徑(data目錄)、日誌路徑(logs目錄)和日誌文件(logs/mongo.log文件)
  2. 創建配置文件mongo.conf,文件內容如下:
    在這裏插入圖片描述
  3. 啓動MongoDB服務
    mongod –config “D:\Mongo\mongo.conf”
    這個是使用自己剛剛在上面配置的配置文件來啓動服務的。注意修改成自己的目錄位置
    在這裏插入圖片描述
  4. 創建並啓動MongoDB服務
    如果每次都如上操作,豈不是相當麻煩,按照如下命令來創建並啓動MongoDB服務,就可以通過windows服務來管理MongoDB的啓動和關閉了
    mongod –config “D:\Mongo\mongo.conf” –install –serviceName “MongoDB”
    net start MongoDB
    執行完之後,就可以去服務裏看是否有成功創建了
    在這裏插入圖片描述在這裏插入圖片描述接下來使用Robomongo客戶端管理工具就可以連接,後因收購被改名爲Robo 3T CSDN 獲取地址
    在這裏插入圖片描述
    Nice,連接成功,如下圖

在這裏插入圖片描述
MongoDB會默認創建admin和local庫,不過剛纔安裝的Mongodb並不需要權限驗證,如果數據安全性不需要很高,則可以安裝不需要驗證的db庫,通過設置服務器之間的白名單做到訪問安全

三:安裝Authorization校驗的MongoDB

需要注意的是:如果之前安裝MongoDB時不需要 Auth,那麼必須卸載MongoDB服務,進行重新安裝,設置賬號權限才生效!
首先卸載之前的mongodb服務,接着刪除data文件夾下所有東西,再清空log
然後再次註冊個服務的話,命令多添加個 –auth
mongod –config “D:\Mongo\mongo.conf” –auth –install –serviceName “MongoDB”
net start MongoDB
此時就可以用Robomongo工具進行連接試一下

mongod.exe --remove --serviceName "MongoDB"
mongod --config "D:\Mongo\mongo.conf"  --auth --install --serviceName "MongoDB"
net start MongoDB
use admin
db.createUser({user: "admin",pwd: "password",roles: [ { role: "root", db: "admin" } ]});
exit

e.g. 新建數據庫

mongo --port 27017 -u admin -p password --authenticationDatabase admin
創建數據庫lxkdb,當在這個數據庫寫入數據的時候,這個數據庫就出現了
use minily
創建普通賬戶
db.createUser({user: "minily",pwd: "password",roles: [{ role: "readWrite", db: "minily" }]});
選擇剛剛創建的數據庫
use minily
然後進行數據庫權限的認證,返回1就是認證OK,0就是認證失敗。這個也是重點,在操作數據庫之前要有那麼一次的權限認證
db.auth('minily','password')

新建Collection,並添加一條數據

db.student.save({name: 'zhangsan', age: 25, sex: true});
在數據庫minily中,插入一條數據,這個表叫student
show collections
顯示當前數據庫有的集合,也就是表
db.student.find()
查student表全部

·以上操作在Robomongo工具上來實現,簡直不要太爽
·索引等進階知識可以看官網
db.collection.createIndex()

roles 用戶角色:
oles 用戶角色:

  1. 數據庫用戶角色:read、readWrite;
  2. 數據庫管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集羣管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 備份恢復角色:backup、restore;
  5. 所有數據庫角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超級用戶角色:root

快速啓動和停止服務的快捷鍵
a. net start serviceName

net stop serviceName

最後,每次要在命令行使用mongo命令,都得進入到對應的bin目錄下,這樣很是麻煩,配置個系統環境變量,方便直接使用

在這裏插入圖片描述這樣就可以直接在cmd命令行,不需要進行目錄切換,就可以直接使用 mongo.exe 命令
在這裏插入圖片描述—————————常用命令以及T-SQL增刪改查語句————————————–

查看錶基本信息:db.getCollection(‘AUDCAD’).stats() 類似於MySql的EXPLAIN
在這裏插入圖片描述倒序查詢數據:db.getCollection(‘AUDCAD’).find({}).sort({field:-1})

在這裏插入圖片描述

命令

  • show dbs; #查看全部數據庫
  • show collections; #顯示當前數據庫中的集合(類似關係數據庫中的表)
  • show users; #查看當前數據庫的用戶信息
  • use ; #切換數據庫跟mysql一樣
  • db;或者db.getName(); #查看當前所在數據庫
  • db.help(); #顯示數據庫操作命令,裏面有很多的命令
  • db.foo.help(); #顯示集合操作命令,同樣有很多的命令,foo指的是當前數據庫下,一個叫foo的集合,並非真正意義上的命令
  • db.foo.find(); #對於當前數據庫中的foo集合進行數據查找(由於沒有條件,會列出所有數據)
  • db.foo.find( { a : 1 } ); #對於當前數據庫中的foo集合進行查找,條件是數據中有一個屬性叫a,且a的值爲1
  • db.version(); #當前db版本
  • db.getMongo(); #查看當前db的連接機器地址
  • db.dropDatabase(); #刪除數據庫

在這裏插入圖片描述好了,那我們就寫到這裏了,希望不懂的地方還請大家多多指教

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章