Python學(xué)習(xí)筆記之 MongoDB數(shù)據(jù)庫(kù) & Redis數(shù)據(jù)庫(kù)
系統(tǒng)說(shuō)明:windows
一部默、操作MongoDB數(shù)據(jù)庫(kù)
1推掸、創(chuàng)建數(shù)據(jù)庫(kù)
語(yǔ)法:use 數(shù)據(jù)庫(kù)名
注意:如果數(shù)據(jù)庫(kù)不存在則創(chuàng)建數(shù)據(jù)庫(kù)罪佳,否則切換到指定的數(shù)據(jù)庫(kù)
注意:如果剛剛創(chuàng)建的數(shù)據(jù)庫(kù)不在列表內(nèi)杯道,如果要顯示它澡绩,我們需要向剛剛創(chuàng)建的數(shù)據(jù)庫(kù)中插入一些數(shù)據(jù)( db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0}) )
2、刪除數(shù)據(jù)庫(kù)
前提:使用當(dāng)前數(shù)據(jù)庫(kù)(use 數(shù)據(jù)庫(kù)名)
db.dropDatabase()
3滑蚯、查看所有數(shù)據(jù)庫(kù)
語(yǔ)法:show dbs
4浪蹂、查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)
a、db
b告材、db.getName()
5坤次、斷開(kāi)連接
exit
6、查看命令幫助
help
二斥赋、集合操作
1缰猴、查看當(dāng)前數(shù)據(jù)庫(kù)下有哪些集合
show collections
2、創(chuàng)建集合
a疤剑、
語(yǔ)法:db.createCollection("集合名")
示例:db.createCollection("class")
b滑绒、
語(yǔ)法:db.集合名.insert(文檔)
示例:db.student.insert({name:"tom",age:18,gender:1,address:"北京",isDelete:0})
區(qū)別:兩者的區(qū)別在于前者創(chuàng)建的是一個(gè)空的集合闷堡,后者創(chuàng)建的一個(gè)空的集合并添加一個(gè)文檔
3、刪除當(dāng)前數(shù)據(jù)庫(kù)中的集合
語(yǔ)法:db.集合名.drop()
示例:db.class.drop()
三疑故、文檔操作
1杠览、插入文檔
a、使用insert()方法插入文檔
插入一個(gè):
語(yǔ)法:db.集合名.insert(文檔)
示例:db.student.insert({name:"李雷",age:22,gender:1,address:"南江",isDelete:0})
插入多個(gè):
語(yǔ)法: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()方法插入文檔
語(yǔ)法:db.集合名.save(文檔)
說(shuō)明:如果不指定_id字段倦零,save()方法類(lèi)似于insert()方法。如果指定_id字段吨悍,則會(huì)更新_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()方法用于更新已存在的文檔
語(yǔ)法:
db.集合名.update(
query,
update,
{
upset:<boolean>,
multi:<boolean>,
writeConcern:<document>
}
)
參數(shù)說(shuō)明:
query:update的查詢(xún)條件育瓜,類(lèi)似于sql里update內(nèi)的where后面的內(nèi)容
update:update的對(duì)象和一些更新的操作符($set,$inc)等,$set直接更新栽烂,$inc在 原有的基礎(chǔ)上累加后更新
upset:可選躏仇,如果不存在update的記錄,是否當(dāng)新數(shù)據(jù)插入腺办,true為插入焰手,F(xiàn)alse為不插入,默認(rèn)為false
multi:可選怀喉,mongodb默認(rèn)是false书妻,只更新找到的第一條記錄,如果這個(gè)參數(shù)為true躬拢,就按照條件查找出來(lái)的數(shù)據(jù)全部更新
writeConcern:可選躲履,拋出異常的級(jí)別
需求:將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()方法用于通過(guò)傳入的文檔替換已有文檔
語(yǔ)法:
db.集合名.save(
document,
{
writeConcern:<document>
}
)
參數(shù)說(shuō)明:
document:文檔數(shù)據(jù)
writeConcern:可選聊闯,拋出異常的級(jí)別
3工猜、文檔刪除
說(shuō)明:在執(zhí)行remove()函數(shù)前,先執(zhí)行find()命令來(lái)判斷執(zhí)行的條件是否存在是一個(gè)良好的習(xí)慣
語(yǔ)法:
db.集合名.remove(
query,
{
justOne:<boolean>,
writeConcern:<document>
}
)
參數(shù)說(shuō)明:
query:可選菱蔬,刪除文檔的條件
justOne:可選篷帅,如果true為1,則只刪除一個(gè)文檔
writeConcern:可選拴泌,拋出異常的級(jí)別
示例:db.student.remove({name:"李雷"})
4魏身、文檔查詢(xún)
a、find()方法
語(yǔ)法:db.集合名.find()
查詢(xún)集合下所有的文檔(數(shù)據(jù)):db.student.find()
b弛针、find()方法查詢(xún)指定列
語(yǔ)法:db.集合名.find(
query,
{
<key>:1,
<key>:1
}
)
參數(shù)說(shuō)明:
query:查詢(xún)條件
key:要顯示的字段叠骑,1表示顯示
示例:
db.student.find({gender:1},{name:1,age:1})
db.student.find({},{name:1,age:1})
c、pretty()方法以格式化的方式來(lái)顯示文檔
示例:db.student.find().pretty()
d削茁、findOne()方法查詢(xún)匹配結(jié)果的第一條數(shù)據(jù)
示例:db.student.findOne({gender:0})
5宙枷、查詢(xún)條件操作符
作用:條件操作符用于比較兩個(gè)表達(dá)式并從MongoDB集合中獲取數(shù)據(jù)
a掉房、大于 - $gt
語(yǔ)法:db.集合名.find({<key>:{$gt:<value>}})
示例:db.student.find({age:{$gt:20}})
b、大于等于 - $gte
語(yǔ)法:db.集合名.find({<key>:{$gte:<value>}})
c慰丛、小于 - $lt
語(yǔ)法:db.集合名.find({<key>:{$lt:<value>}})
d卓囚、小于等于 - $lte
語(yǔ)法:db.集合名.find({<key>:{$lte:<value>}})
e、大于等于和小于等于 - $gte 和 $lte
語(yǔ)法:db.集合名.find({key}:{$gte:<value>,$lte:<value>}})
f诅病、等于 - :
語(yǔ)法:db.集合名.find({key}:<value>)
g哪亿、使用_id進(jìn)行查詢(xún)
語(yǔ)法:db.集合名.find({"_id":ObjectId("id值")})
示例:db.student.find({"_id":ObjectId("5b0a2360864a739fd6c0af16")})
h、查詢(xún)某個(gè)結(jié)果集的數(shù)據(jù)條數(shù)
db.student.find().count()
i贤笆、查詢(xún)某個(gè)字段的值當(dāng)中是否包含另一個(gè)值
示例:db.student.find({name:/om/})
j蝇棉、查詢(xún)某個(gè)字段的值是否以另一個(gè)值開(kāi)頭
示例:db.student.find({name:/^to/})
6、條件查詢(xún)and 和 or
a芥永、AND條件
語(yǔ)法:db.集合名.find({條件1,條件2,……,條件n})
示例:db.student.find({gender:0,age:{$ge:16}})
b篡殷、OR條件
語(yǔ)句:
db.集合名.find(
{
$or:[{條件1},{條件2},{……},{條件n}]
}
)
示例:db.student.find({$or:[{age:21},{age:22}]})
c、AND和OR聯(lián)合使用
語(yǔ)法:
db.集合名.find(
{
條件1,
條件2,
$or:[{條件3},{條件4}]
}
)
7埋涧、limit板辽、 skip
a、limit():讀取指定數(shù)量的數(shù)據(jù)記錄
db.student.find().limit(2)
b棘催、skip():跳過(guò)指定數(shù)量的數(shù)據(jù)
db.student.find().skip(3)
c劲弦、skip和limit聯(lián)合使用
通常用這種方式來(lái)實(shí)現(xiàn)分頁(yè)功能
示例:db.student.find().skip(3).limit(2)
8、排序
語(yǔ)法:db.集合名.find().sort({<key>:1|-1})
示例:db.student.find().sort({age:1})
注意:1表示升序醇坝,-1表示降序
Redis
redis類(lèi)型操作
一邑跪、String
概述:
String是redis最基本的類(lèi)型,最大能存儲(chǔ)512MB的數(shù)據(jù)纲仍,String類(lèi)型是二進(jìn)制安全的呀袱,即可存儲(chǔ)任何數(shù)據(jù)、比如數(shù)字郑叠、圖片夜赵、序列化對(duì)象等
1、設(shè)置
a乡革、設(shè)置鍵值
set key value
b寇僧、設(shè)置鍵值及過(guò)期時(shí)間
setex key senconds value
c、設(shè)置多個(gè)鍵值
mset key value [key value ……]
2沸版、獲取
a嘁傀、根據(jù)鍵獲取值,如果鍵不存在則返回None(null 0 nil)
get key
b视粮、根據(jù)多個(gè)鍵獲取多個(gè)值
mget key [key ……]
3细办、運(yùn)算
要求:值是數(shù)字類(lèi)型的字符串
a、將key對(duì)應(yīng)的值加1
incr key
b、將key對(duì)應(yīng)的值減1
decr key
c笑撞、將key對(duì)應(yīng)的值加整數(shù)
incrby key intnum
d岛啸、將key對(duì)應(yīng)的值減整數(shù)
decrby key intnum
4、其它
a茴肥、追加值
append key value
b坚踩、獲取值長(zhǎng)度
strlen key
二、key
1瓤狐、查找鍵瞬铸,參數(shù)支持正則
keys pattern
2、判斷鍵是否存在础锐,如果存在返回1嗓节,如果不存在返回0
exists key
3、查看鍵對(duì)應(yīng)的value的類(lèi)型
type key
4皆警、刪除鍵及對(duì)應(yīng)的值
del key [key ……]
5赦政、設(shè)置過(guò)期時(shí)間,以秒為單位
expire key seconds
6耀怜、查看有效時(shí)間,以秒為單位
ttl key
三桐愉、hash
概述:hash用于存儲(chǔ)對(duì)象的
{
name:"tom",
age:18
}
1财破、設(shè)置
a、設(shè)置單個(gè)值
hset key field value
b从诲、設(shè)置多個(gè)值
hmset key field value [field value ……]
2左痢、獲取
a、獲取一個(gè)屬性的值
hget key field
b系洛、獲取多個(gè)屬性的值
hmget key field [field ……]
c俊性、獲取所有屬性和值
hgetall key
d、獲取所有的屬性
hkeys key
e描扯、獲取所有值
hvals key
f定页、返回包含屬性的個(gè)數(shù)
hlen key
3、其它
a绽诚、判斷屬性是否存在典徊,存在返回1,不存在返回0
hexists key field
b恩够、刪除屬性及值
hdel key field [field ……]
c卒落、返回值的字符串長(zhǎng)度
hstrlen key field
四、list
概述:列表的元素類(lèi)型為string蜂桶,按照插入的順序排序儡毕,在列表的頭部或尾部添加元素
1、設(shè)置
a扑媚、在頭部插入
lpush key value [value……]
b腰湾、在尾部插入
rpush key value [value……]
c雷恃、在一個(gè)元素的前或后插入新元素
linsert key before|after pivot value
d、設(shè)置指定索引的元素值
lset key index value
注意:index從0開(kāi)始
注意:索引值可以是負(fù)數(shù)檐盟,表示偏移量是從list的尾部開(kāi)始褂萧,如-1表示最后一個(gè)元素
2、獲取
a葵萎、移除并返回key對(duì)應(yīng)的list的第一個(gè)元素
lpop key
b导犹、移除并返回key對(duì)應(yīng)的list的最后一個(gè)元素
rpop key
c、返回存儲(chǔ)在key的列表中的指定范圍的元素
lrange key start end
注意:start end 都是從0開(kāi)始
注意:偏移量可以是負(fù)數(shù)
3羡忘、其它
a谎痢、裁剪列表,改為元集合的一個(gè)子集
ltrim key start end
注意:start end 都是從0開(kāi)始
注意:偏移量可以是負(fù)數(shù)
b卷雕、返回存儲(chǔ)在key里的list的長(zhǎng)度
llen key
c节猿、返回列表中索引對(duì)應(yīng)的值
五、set
概述:無(wú)序集合漫雕,元素類(lèi)型為string類(lèi)型滨嘱,元素具有唯一性,不重復(fù)
1浸间、設(shè)置
a太雨、添加元素
sadd key member [member ……]
2、獲取
a魁蒜、返回key集合中所有的元素
smmbers key
b囊扳、返回集合元素個(gè)數(shù)
scard key
3、其它
a兜看、求多個(gè)集合的交集
sinter key [key ……]
b锥咸、求多個(gè)集合的差集
sdiff key [key ……]
c、求多個(gè)集合的合集
sunion key [key ……]
d细移、判斷元素是否在集合中,存在返回1搏予,不存在返回0
sismember key member
六、zset
概述:
a葫哗、有序集合缔刹,元素類(lèi)型為string,元素具有唯一性劣针,不能重復(fù)
b校镐、每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類(lèi)型的score(表示權(quán)重),通過(guò)權(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牍陌、返回元素個(gè)數(shù)
zcard key
c、返回有序集合key中员咽,score在min和max之間的元素的個(gè)數(shù)
zcount key min max
d毒涧、返回有序集合key中,成員member和score值
zscore key member