終端命令:
在線安裝:
sudo apt-get install mongodb
默認安裝路徑 : /var/lib/mongodb
配置文件 : /etc/mongodb.conf
命令集 : /usr/bin /usr/local/bin
下載解壓:
PATH=$PATH:/opt/mongodb.../bin
export PATH
將以上兩句寫入 /etc/rc.local
備份:
mongodump -h 主機地址 -d 庫名 -o 文件名
恢復:
mongorestore -h 主機地址: 端口號 -d 庫名 文件路徑
mongod --port 8080 設置端口(默認27017)
mongo 進入mongo shell
quit() exit ctrl+c/z/d 退出mongo shell
mongostat 監測速度 (command 命令次數 flushes IO次數 vsize 虛擬內存)
mongotop 監測時長 ( ns 數據集合、 total 總時長、 read 讀時長 、write 寫時長)
Mongo命令:
use 庫名 建立/選擇庫
show dbs 查詢庫
db.dropDatabase() 刪除庫
db.createCollection(「集合名」) 建立集合
db.集合名.insert(...) 建立集合
show collections 查詢集合
show tables 查詢集合
db.getCollection("集合名") 查詢集合所在庫
db.集合名.drop() 刪除集合
db.集合名.renameCollion("新集合名") 重命名集合
db.集合名.insert({name:"tom"..}) 插入文檔
db.集合名.save({name:"tom",...}) 插入文檔
db.集合名.insert([{}, {}...]) 插入多個文檔
db.集合名.save([{} {}...]) 插入多個文檔(加_id鍵會覆蓋原文檔)
db.集合名.find(查找條件,域) 查找文檔
db.集合名.findOne(查找條件,域) 只顯示找到的第一條文檔
db.集合名.distinct("集合名") 查看集合內某個域的取值範圍
db.集合名.remove(query,justOne) 刪除指定條件文檔(默認false刪除全部)
db.集合名.update(query, update,upert,multi) 修改文檔
db.集合名.find().count() 計數統計查詢結果文檔的個數
db.集合名.find().pretty() 將查詢結果格式化顯示
db.集合名.find().limit(n) 顯示查找結果的前n條結果
db.集合名.find().skip(n) 跳n過前條顯示後面的結果
db.集合名.find().count() 計數統計查詢結果文檔的個數
db.集合名.find().sort({filed:1/-1,...}) 排序 1:升序, -1:降序,第項相同按照第項二排序
db.集合名.find({'域名.下標':內容{_id:0}) 操做組中的某一項
db.集合名.find({"外域名.內部文檔域":內容}, {_id:0}) 操做內部文檔(Object)的域
db.集合名.ensureIndex({域:1/-1}) 建立索引(1:正向索引 -1:反向)
db.集合名.getIndexes() 查看某個集合中的索引
db.集合名.ensureIndex({域:1/-1}},{name:'索引名'}) 自定義索引名稱
db.集合名.dropIndex(({域:1/-1}) 刪除索引
db.集合名.dropIndex("索引名") 刪除索引
db.集合名.dropIndexes() 刪除全部索引(默認_id索引沒法刪除)
db.集合名.ensureIndex({域名1:1/-1,域名2:1/-1}) 建立符合索引 更節省空間
db.集合名.find({'數組.下標':值},{_id:0}) 若是對數組建立索引 查找值也屬於索引查找
db.集合名.ensureIndex({域:1/-1},{unique:true}) 建立惟一索引
db.集合名.ensureIndex({域:1/-1},{sparse:true}) 建立稀疏索引
db.createCollection('集合名',{capped:true,size:10000,max:3}) 建立固定集合
比較操做符:
$eq 等於
$lt 小於(字符串也能夠比較大小)
$lte 小於等於
$gt 大於
$gte 大於等於
$ne 不等於
$in 在什麼裏(in)
$nin 不在什麼裏(not in)
邏輯操做符:
$and 與
query內若是多個條件用逗號隔開默認就是and關係
$or 或
$not 非
$nor 既不也不
數組操做符:
$size 只顯示指定個size個數的文檔]
$all 查找數組中包含多項的
$slic 取數組中部分顯示,在域(field)中聲明
其餘query查詢:
$exists 判斷一個域是否存在
$mod 餘數查找
$type 數據類型查找
修改操做符:
$set 修改一個直 不存在則添加
$unset 刪除一個域
$rename 修改域名
$setOnInsert 第三個參數爲true做爲補充插入數據 不然無用
$inc 加減修改器可使整數小數正數負數
$mul 乘法修改器可使整數小數正數負數
$min 設置域的值爲上線 超過min修改成min
$max 設置域的值爲下線 小於max修改成max
數組修改符:
$push 向數組中添加一項
$pushAll 向數組中添加多項
$pull 從數組中刪除一項
$pullAll 從數組中刪除多項
$each 對多個值進行逐一操做
$position 指定插入位置(配合each使用)
$sort 對數組進行排序(配合each使用)
$pop 彈出一項(1:彈出第一項 -1:最後一項)
$addToSet 向數組中添加一項(不容許重複)
時間類型:ISODate()
nuw Date() 自動生成當前時間
Date() 獲取當前計算機時間格式字符串
ISODate() 生成當前時間
ISODate("2018-01-01 12:12:12") 自定義時間
ISODate("20180101 12:12:12") 自定義時間
ISODate("20180101") 自定義時間
valueOf() 生成時間戳
null 若是某個域的值不存在能夠設置爲null
修改參數:
query: 篩選要查找要修改的文檔
update: 將篩選的文檔修改成什麼內容須要配合修改操做符
upsert: bool值 默認false 若是query的文檔不存在則不進行任何操做
設置爲true 若是query和文檔不存在 就根據query和update插入新文檔
multi: bool值 默認false 若是query文檔有多條則只修改第一條
設置爲true 則修改全部符合條件的文檔
查找參數:
query(條件):
鍵值對的形式給出要展現的文檔
field(域):
以鍵值對對的形式給出要展現或不展現的域
0爲值不顯示該域 1爲值顯示該域
若是使用0設置某些域不顯示默認其餘域顯示
若是使用1設置某些域顯示默認其餘域不顯示
*_id 只有設置爲0纔不顯示不然默認顯示
除_id之外,其餘域必須同時設置0或1
索引:
指創建指定鍵值及所在文檔中存儲位置的對照清單
使用索引能夠方便咱們進行快速查找,減小數據遍歷次數,從而提升查找效率
覆蓋索引:
查找操做須要獲取的域,只有索引域沒有其餘域。
此時索引表能夠直接提供給用戶想要的內容,提升查找效率
惟一索引:
建立的索引,索引域值無重複,此時能夠建立惟一索引
惟一索引數據結構更加便於查找
稀疏索引:
只針對有指定域的文檔建立索引表,若是某個文檔沒有該域則不會插入到索引表中
索引約束:
1. 索引表也須要佔用必定的磁盤空間
2. 當數據發生更新時索引表也要隨之更新
綜上 :
1. 數據量比較大時更適合建立索引,數據量較小時沒有必要付出索引代價
2. 頻繁進行查找操做而不是更新刪除插入操做,此時更適合使用索引
固定集合:
大小固定的集合,稱之爲固定集合
插入速度更快,順序查找更快
能夠控制集合的空間大小
可以自動淘汰早期數據
參數:
capped:true 建立固定集合
size:10000 固定集合的大小 字節數
max :1000 表示最多多少條文檔