Python ? day 13

Python學習筆記之 MongoDB數(shù)據(jù)庫 & Redis數(shù)據(jù)庫

系統(tǒng)說明:windows
一、操作MongoDB數(shù)據(jù)庫
1、創(chuàng)建數(shù)據(jù)庫
    語法:use 數(shù)據(jù)庫名
    注意:如果數(shù)據(jù)庫不存在則創(chuàng)建數(shù)據(jù)庫,否則切換到指定的數(shù)據(jù)庫
    注意:如果剛剛創(chuàng)建的數(shù)據(jù)庫不在列表內(nèi),如果要顯示它,我們需要向剛剛創(chuàng)建的數(shù)據(jù)庫中插入一些數(shù)據(jù)(  db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0})  )
2、刪除數(shù)據(jù)庫
    前提:使用當前數(shù)據(jù)庫(use 數(shù)據(jù)庫名)
    db.dropDatabase()
3、查看所有數(shù)據(jù)庫
    語法:show dbs
4、查看當前正在使用的數(shù)據(jù)庫
    a、db
    b、db.getName()
5、斷開連接
    exit
6、查看命令幫助
    help
二、集合操作
1、查看當前數(shù)據(jù)庫下有哪些集合
    show collections
2、創(chuàng)建集合
    a、
        語法:db.createCollection("集合名")
        示例:db.createCollection("class")
    b、
        語法:db.集合名.insert(文檔)
        示例:db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0}) 
        
    區(qū)別:兩者的區(qū)別在于前者創(chuàng)建的是一個空的集合,后者創(chuàng)建的一個空的集合并添加一個文檔
3、刪除當前數(shù)據(jù)庫中的集合
    語法:db.集合名.drop()
    示例:db.class.drop()
三、文檔操作
1、插入文檔
    a、使用insert()方法插入文檔
        插入一個:
            語法:db.集合名.insert(文檔)
            示例:db.student.insert({name:"李雷",age:22,gender:1,address:"南江",isDelete:0}) 
        插入多個:
            語法:db.集合名.insert([文檔1,文檔2,……,文檔n])
            示例:db.student.insert([{name:"李雷",age:22,gender:1,address:"南江",isDelete:0},{name:"cc",age:22,gender:1,address:"天津",isDelete:0},{name:"小姐姐",age:22,gender:1,address:"成都",isDelete:0}])
    b、使用save()方法插入文檔
        語法:db.集合名.save(文檔)
        說明:如果不指定_id字段,save()方法類似于insert()方法。如果指定_id字段,則會更新_id字段的數(shù)據(jù)
        示例1:db.student.insert({name:"張三",age:21,gender:1,address:"上海",isDelete:0})
        示例2:db.student.insert({_id:ObjectId("5b0a2360864a739fd6c0af16"),name:"tom",age:22,gender:1,address:"上海",isDelete:0})
    
2、文檔更新
    a、update()方法用于更新已存在的文檔
        語法:
            db.集合名.update(
                query,
                update,
                {
                    upset:<boolean>,
                    multi:<boolean>,
                    writeConcern:<document>
                }
            )
        參數(shù)說明:
            query:update的查詢條件,類似于sql里update內(nèi)的where后面的內(nèi)容
            update:update的對象和一些更新的操作符($set,$inc)等,$set直接更新,$inc在 原有的基礎(chǔ)上累加后更新
            upset:可選,如果不存在update的記錄,是否當新數(shù)據(jù)插入,true為插入,F(xiàn)alse為不插入,默認為false
            multi:可選,mongodb默認是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就按照條件查找出來的數(shù)據(jù)全部更新
            writeConcern:可選,拋出異常的級別
            
        需求:將tom的年齡更新為25 
        示例:
            db.student.update({name:"tom"},{$set:{age:25}})
            累加:db.student.update({name:"tom"},{$inc:{age:25}})  
            全改:db.student.update({name:"李雷"},{$set:{age:30}},{multi:true})
        
    b、save()方法用于通過傳入的文檔替換已有文檔
        語法:
            db.集合名.save(
                document,
                {
                    writeConcern:<document>
                }
            )
        參數(shù)說明:
            document:文檔數(shù)據(jù)
            writeConcern:可選,拋出異常的級別
    
3、文檔刪除
    說明:在執(zhí)行remove()函數(shù)前,先執(zhí)行find()命令來判斷執(zhí)行的條件是否存在是一個良好的習慣
    
    語法: 
        db.集合名.remove(
            query,
            {
                justOne:<boolean>,
                writeConcern:<document>
            }
        )
    參數(shù)說明:
        query:可選,刪除文檔的條件
        justOne:可選,如果true為1,則只刪除一個文檔
        writeConcern:可選,拋出異常的級別
    示例:db.student.remove({name:"李雷"})
        
4、文檔查詢
    a、find()方法
        語法:db.集合名.find()
        查詢集合下所有的文檔(數(shù)據(jù)):db.student.find()
        
    b、find()方法查詢指定列
        語法:db.集合名.find(
            query,
            {
                <key>:1,
                <key>:1
            }
        )
        參數(shù)說明:
            query:查詢條件
            key:要顯示的字段,1表示顯示
        示例:
            db.student.find({gender:1},{name:1,age:1})
            db.student.find({},{name:1,age:1})
            
    c、pretty()方法以格式化的方式來顯示文檔
        示例:db.student.find().pretty()
        
    d、findOne()方法查詢匹配結(jié)果的第一條數(shù)據(jù)
        示例:db.student.findOne({gender:0})
            
5、查詢條件操作符
    作用:條件操作符用于比較兩個表達式并從MongoDB集合中獲取數(shù)據(jù)
        a、大于                    -   $gt
            語法:db.集合名.find({<key>:{$gt:<value>}})
            示例:db.student.find({age:{$gt:20}})
            
        b、大于等于              -   $gte
            語法:db.集合名.find({<key>:{$gte:<value>}})
            
        c、小于                    -   $lt
            語法:db.集合名.find({<key>:{$lt:<value>}})
            
        d、小于等于              -   $lte
            語法:db.集合名.find({<key>:{$lte:<value>}})
        
        e、大于等于和小于等于 -   $gte 和 $lte
            語法:db.集合名.find({key}:{$gte:<value>,$lte:<value>}})
            
        f、等于                    -   :
            語法:db.集合名.find({key}:<value>)
        
        g、使用_id進行查詢
            語法:db.集合名.find({"_id":ObjectId("id值")})
            示例:db.student.find({"_id":ObjectId("5b0a2360864a739fd6c0af16")})
            
        h、查詢某個結(jié)果集的數(shù)據(jù)條數(shù)
            db.student.find().count()
        
        i、查詢某個字段的值當中是否包含另一個值
            示例:db.student.find({name:/om/})
        
        j、查詢某個字段的值是否以另一個值開頭
            示例:db.student.find({name:/^to/})
    
6、條件查詢and 和 or
    a、AND條件
        語法:db.集合名.find({條件1,條件2,……,條件n})
        示例:db.student.find({gender:0,age:{$ge:16}})
        
    b、OR條件
        語句:
            db.集合名.find(
                {
                    $or:[{條件1},{條件2},{……},{條件n}]
                }
            )
        示例:db.student.find({$or:[{age:21},{age:22}]})
        
    c、AND和OR聯(lián)合使用
        語法:
            db.集合名.find(
                {
                    條件1,
                    條件2,
                    $or:[{條件3},{條件4}]
                }
            )
 
7、limit、 skip
    a、limit():讀取指定數(shù)量的數(shù)據(jù)記錄
        db.student.find().limit(2)
    b、skip():跳過指定數(shù)量的數(shù)據(jù)
        db.student.find().skip(3)
    c、skip和limit聯(lián)合使用
        通常用這種方式來實現(xiàn)分頁功能
        示例:db.student.find().skip(3).limit(2)
8、排序
    語法:db.集合名.find().sort({<key>:1|-1})
    示例:db.student.find().sort({age:1})
    注意:1表示升序,-1表示降序
Redis
redis類型操作
一、String
概述:
    String是redis最基本的類型,最大能存儲512MB的數(shù)據(jù),String類型是二進制安全的,即可存儲任何數(shù)據(jù)、比如數(shù)字、圖片、序列化對象等
    
1、設(shè)置
    a、設(shè)置鍵值
        set key value 
    
    b、設(shè)置鍵值及過期時間
        setex key senconds value
        
    c、設(shè)置多個鍵值
        mset key value [key value ……]
        
2、獲取
    a、根據(jù)鍵獲取值,如果鍵不存在則返回None(null 0 nil)
        get key 
    b、根據(jù)多個鍵獲取多個值
        mget key [key ……]

3、運算
    要求:值是數(shù)字類型的字符串
    a、將key對應的值加1
        incr key 
    b、將key對應的值減1
        decr key 
    c、將key對應的值加整數(shù)
        incrby key intnum
    d、將key對應的值減整數(shù)
        decrby key intnum   
        
4、其它
    a、追加值
        append key value
    b、獲取值長度
        strlen key
二、key
1、查找鍵,參數(shù)支持正則
    keys pattern
    
2、判斷鍵是否存在,如果存在返回1,如果不存在返回0
    exists key

3、查看鍵對應的value的類型
    type key

4、刪除鍵及對應的值
    del key [key ……]

5、設(shè)置過期時間,以秒為單位
    expire key seconds

6、查看有效時間,以秒為單位
    ttl key
三、hash
概述:hash用于存儲對象的
{
    name:"tom",
    age:18
}
1、設(shè)置
    a、設(shè)置單個值
        hset key field value
    b、設(shè)置多個值
        hmset key field value [field value ……]
    
2、獲取
    a、獲取一個屬性的值
        hget key field
    b、獲取多個屬性的值
        hmget key field [field ……]
    c、獲取所有屬性和值
        hgetall key
    d、獲取所有的屬性
        hkeys key
    e、獲取所有值
        hvals key
    f、返回包含屬性的個數(shù)
        hlen key
    
3、其它
    a、判斷屬性是否存在,存在返回1,不存在返回0
        hexists key field
    b、刪除屬性及值
        hdel key field [field ……]
    c、返回值的字符串長度
        hstrlen key field
四、list
概述:列表的元素類型為string,按照插入的順序排序,在列表的頭部或尾部添加元素
1、設(shè)置
    a、在頭部插入
        lpush key value [value……]
    b、在尾部插入
        rpush key value [value……]
    c、在一個元素的前或后插入新元素
        linsert key before|after pivot value
    d、設(shè)置指定索引的元素值
        lset key index value
        注意:index從0開始
        注意:索引值可以是負數(shù),表示偏移量是從list的尾部開始,如-1表示最后一個元素
2、獲取
    a、移除并返回key對應的list的第一個元素
        lpop key
    b、移除并返回key對應的list的最后一個元素
        rpop key
    c、返回存儲在key的列表中的指定范圍的元素
        lrange key start end
        注意:start end 都是從0開始
        注意:偏移量可以是負數(shù)
3、其它
    a、裁剪列表,改為元集合的一個子集
        ltrim key start end
        注意:start end 都是從0開始
        注意:偏移量可以是負數(shù)
    b、返回存儲在key里的list的長度
        llen key
    c、返回列表中索引對應的值
五、set
概述:無序集合,元素類型為string類型,元素具有唯一性,不重復
1、設(shè)置
    a、添加元素
        sadd key member [member ……]
2、獲取
    a、返回key集合中所有的元素
        smmbers key
    b、返回集合元素個數(shù)
        scard key
3、其它
    a、求多個集合的交集
        sinter key [key ……]
    b、求多個集合的差集
        sdiff key [key ……]
    c、求多個集合的合集
        sunion key [key ……]
    d、判斷元素是否在集合中,存在返回1,不存在返回0
        sismember key member
六、zset
概述:
    a、有序集合,元素類型為string,元素具有唯一性,不能重復
    b、每個元素都會關(guān)聯(lián)一個double類型的score(表示權(quán)重),通過權(quán)重的大小排序,元素的score可以相同
1、設(shè)置
    a、添加
        zadd key score member [score member ……]
        zadd z1 1 a 5 b 3 c 2 d 4 e
2、獲取
    a、返回指定范圍的元素
        zrange key start end
    b、返回元素個數(shù)
        zcard key
    c、返回有序集合key中,score在min和max之間的元素的個數(shù)
        zcount key min max
    d、返回有序集合key中,成員member和score值
        zscore key member 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容