Python全棧 MongoDB 數據庫(Mongo、 正則基礎、一篇通)

               終端命令:
 
    在線安裝:
        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    表示最多多少條文檔
相關文章
相關標籤/搜索