mongodb屬於nosql數據庫,是一個文檔型數據庫,nosql實際上是相對於sql數據庫而言的。傳統的sql數據庫存在一系列的問題。好比:須要遵循ACID範式,數據量過大的時候性能降低,不太容易作擴展等問題。nosql則解決了這樣的問題
nosql具備如下特色:mysql
mongodb數據結構有以下幾種:web
help() #獲取幫助信息 show dbs #列出當前數據庫 show collections #列出指定庫中數據表 show users #列出用戶 show profile #列出當前數據庫全部性能參數 show logs #列出日誌 show log() #列出指定日誌 db.stats() #列出數據庫狀態 db.version() #列出數據庫版本 db.serverStatus() #列出數據庫所在服務器狀態信息 db.getcollectionNames() #列出當前庫全部collection db.collection.stats() #列出當前collection的信息
> use db_name #切換和建立數據庫,mongodb不須要手動建立數據庫,執行此命令其實已經建立數據庫了,可是此時show dbs不會顯示,只有往db中插入數據纔會顯示 > db.students.find() #列出全部document > db.students.find({age:{$lt: 1}}) #列出age小於1的全部數據 > db.students.find({age:{$lt: 1}}).count() #統計全部age小於1的數據個數 > db.students.find({age:{$lt:9}}).limit(3) #僅顯示3條age小於9的數據 > db.students.find({age:{$lt:9}}).skip(3) #顯示age小於9的數據,跳過前三條 > db.students.findOne({age:{$lt:9}}) #僅顯示一條age小於9的數據 > db.students.find({age:{$in:[10,20]}}) #顯示年齡在10到20中間的數據 > db.students.find({$or:[{name:'student15'},{age:10}]}) #查找name爲student15或者age爲10的用戶 > db.students.find({$and:[{name:'student15'},{age:10}]}) #查找name爲student15而且age爲10的用戶 > db.students.find({class:{$exists:true}}) 查詢存在class字段的文檔 > db.studnets.update({name:"tom"},{$set:{age:21}}}) #修改tom的age爲21
find操做支持以下高級用法:sql
$type:返回指定字段類型爲指定類型的文檔,語法格式{field:{$type:<BSON type}};1 Double(雙精度),2 String,3 Object(對象),Array,Binary data,Undefined,Boolean,Date,Null,Regular Expression,JavaScripy,TimeStampmongodb
注意:每一種數據類型都有一種數字來表示此類型shell
update經常使用操做:數據庫
刪除經常使用操做:json
db.mycoll.remove(<query>,<justOne>) justOne指定要刪除的個數 db.mycoll.remove({age:21}) 刪除年齡爲21的文檔 db.mycoll.drop() 刪除當前指定coll db.dropDatabase() 刪除庫,須要先切換到庫中
mongodb支持的索引類型:服務器
hash索引:只適用於精確查找,hash索引不論數據多少,查詢速度都是一致的數據結構
注意:按照範圍查詢使用的是樹狀索引併發
db.students.ensureIndex({name:1}) #在name上建立升序索引,1表示升序索引,通常索引名即爲字段名,能夠經過name來額外指定索引名 db.students.getIndexes() #獲取在students上的全部索引 db.students.dropIndexes() #刪除全部索引 db.students.dropIndex(Index_name) #刪除指定名字索引 db.reIndex() #重建索引 db.students.find(name:"student5000").explain() #顯示語句的執行過程
索引經常使用操做:
sparse:true:建立稀疏索引
注意:
稀疏索引:多個字段取值共用一個索引項,好比1到5歲的人指向一個索引。索引體積小,可是可能須要作二次查找
稠密索引:每個字段取值都有一個單獨的索引項
經常使用服務器選項: