初窺 MongoDB

不該相遇在秋天發表於2017-11-23

 

最近在研究Nodejs 自然就接觸到了MongoDB  這玩意兒有意思  與關係型資料庫相比少了很多條條框框 讓我情不自禁的想要了解它的所有

 

MongoDB與Redis同類 屬於NoSql的一種,特點是簡單,方便擴充套件,效能更佳。

 

以下是MongoDB與MySQL的不同:

1.MongoDB事務稍弱(不支援多行多文件多語句原子性更新)
2.MongoDB不支援多表聯查。
3.MongoDB沒有表結構概念,每條記錄可以存入完全不同的資料結構。
4.MongoDB完全的索引支援,這點比Redis純鍵值對要強大,單鍵索引,多鍵索引,陣列索引,全文索引,地圖索引。
5.MongoDB速度快 效能優越 (預設操作是寫日誌 寫記憶體 返回結果 然後才會在後臺進行每隔幾十毫秒的日誌刷盤)
6.MongoDB的資料儲存更加安全(預設支援三節點以上的複製叢集)

(當然 肯定還有很多是我不知道的)

 

下載地址
https://www.mongodb.com/download-center#community

下載之後自行移動解壓  

 

本篇教程的解壓後目錄為 /usr/local/mongodb

 

手動建立配置檔案

vim /usr/local/mongodb/mongodb.conf

 

配置檔案寫入以下內容:

#資料庫存放目錄
dbpath=/usr/local/mongodb/data
#是否啟動日誌
journal=true
#日誌檔案路徑 非目錄
logpath=/usr/local/mongodb/run.log
logappend=true
#繫結ip
bind_ip = 127.0.0.1
#繫結埠
port = 27018
#後臺啟動
fork = true

 

建立data目錄與log檔案
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/run.log

 

給個許可權
chmod 755 -R /usr/local/mongodb

 

進入bin目錄

 cd  /usr/local/mongodb/bin/


啟動
./mongod -f /usr/local/mongodb/mongodb.conf

 

出現以下提示即為啟動成功:
about to fork child process, waiting until server is ready for connections.
forked process: 16131
child process started successfully, parent exiting

 

連線資料庫
./mongo
預設連線埠為27017 如果配置檔案中指定了其他埠 則需要帶上 如 ./mongo -port 27018

 

基本操作:

//查詢所有庫(空庫不會顯示)
show dbs
//查詢所有表
db.getCollectionNames()
//切換資料庫(如庫不存在會自動建立)
use dbname
//往a表插入內容(如表不存在會自動建立)(MongoDB中的表 被稱作為集合)
db.a.insert({username:'admin',password:123456})
//將a表中使用者為admin的密碼改為111111
db.a.update({'username':'admin'},{$set:{'password':111111}})
//刪除a表中使用者為admin的資料
db.a.remove({'username':'admin'})

 

查 與 MySQL對照

//所有的查詢後面都可以跟上.pretty()代表格式化輸出 如 db.a.find().pretty()

db.a.find() select * from a

db.a.count() select count(*) from a

db.a.findOne()  select * from a limit 1

db.a.find({'username':'admin','password':123456}) select * from a where username='admin' and password=123456

db.a.find({'username':'admin'}, {password: 1})  select password from a where username='admin'  //1為指定返回鍵 0為指定排除鍵

db.a.find({$or:[{"username":"admin"},{"username": "mongod"}]})  select * from a where username='admin' or username='mongod'

db.a.find({"num": {$gt:90}, $or: [{"username": "admin"},{"username": "mongod"}]})  select * from num>90 and (username='admin' or username='mongod')

db.a.find({"id" : {"$in" : [10, 11, 12]}}) select * from a where id in (10,11,12)  

 

相關文章