1. 程式人生 > >python學習第一百零八天:MongoDB,pymongo

python學習第一百零八天:MongoDB,pymongo

MongoDB:
資料庫,nosql
[{
id:1
name:"蔡文姬"
age: 16
gender:"女"
},
{
id:1
name:"蔡文姬"
age: 16
sex:["女","girl","老阿姨"]
other:{
hobby:["男","boy","小哥哥"]
}
}]

*使用了不存在的物件即建立該物件
*不存在關係連結

插入:
db.users.insert({name:"蔡文姬",age:16}) # 建議不要使用 不推薦使用
查詢:
db.users.find()
更新:
db.users.update({"name":"蔡文姬"},{$set:{"age":18}})# 建議不要使用 不推薦使用
刪除:
db.users.remove({"age":21}) # 建議不要使用 不推薦使用


table Collections 表
row Documents 資料條目
column Field 欄位

MongoDB資料型別:

Object ID :Documents 自生成的 _id 並且 不支援轉換成JSON字串
?:{"_id" : ObjectId("5bda5293c6c72e52ffc7e91e")}
ObjectId:"5bda5293c6c72e52ffc7e91e"
0-8位元組是時間戳,
9-14位元組的機器識別符號,表示MongoDB例項所在機器的不同;
15-18位元組的程序id,表示相同機器的不同MongoDB程序。
19-24位元組是計數器

String: 字串,必須是utf-8
Boolean:布林值,true 或者false (這裡有坑哦~在我們大Python中 True False 首字母大寫)
Integer:整數 (Int32 Int64 你們就知道有個Int就行了,一般我們用Int32)
Double:浮點數 (沒有float型別,所有小數都是Double)
Arrays:陣列或者列表,多個值儲存到一個鍵 (list哦,大Python中的List哦)
Object:如果你學過Python的話,那麼這個概念特別好理解,就是Python中的字典,這個資料型別就是字典
Null:空資料型別 , 一個特殊的概念,None Null
Timestamp:時間戳
Date:儲存當前日期或時間unix時間格式 (我們一般不用這個Date型別,時間戳可以秒殺一切時間型別)


增刪改查的支援方式:

insert:
db.users.insertMany([{"name":"金王吧"},{"name":"egon"}])
db.users.insertOne({"name":"劉sir"})

remove:
db.users.deleteOne({"age":30})
db.users.deleteMany({"age":30})

update:
db.users.updateOne({},{$set: {"cursors":"FullStack"}})
db.users.updateMany({},{$set: {"cursors":"FullStack"}})

find:
db.users.find({})
db.users.findOne({})



數學比較符:

$lt: <
$lte: <=
$gt: >
$gte: >=
$eq;==
: : == or =


$:
儲存滿足條件的資料下標索引位置
db.users.updateOne({"other.name":"linux","name":"銀網咖"},{$set:{"other.$.score":19}})

弊端:[
[1,2,3],
[{k:{zk:zv}},{k2:v2},{k3:v3}],
[4,5,6],
]


$關鍵字 查詢:
$or : db.users.find({$or:[{age:18},{name:"銀網咖"}]})

$and : ,

$in : db.users.find({age:{$in:[18,84,73]}})

$all : db.users.find({hobby:{$all:[1,2,3,4,5,6]}})

$修改器 update:
$set: 直接將欄位的值設定為value
$unset: 刪除欄位
$inc: 原值增加 db.users.updateMany({name:"金王吧"},{$inc: {cursors: 1}})

$array修改器:
$push : append(item) db.users.updateMany({name:"金王吧"},{$push: {hobby:10}})
$pull : remove(item) db.users.updateMany({name:"金王吧"},{$pull: {hobby:10}})
$pop : pop() db.users.updateMany({name:"金王吧"},{$pop: {hobby:-1}}) 1最後一個 -1第一個


skip limit sort

limit : db.users.find({}).limit(2) 顯示條目數量
skip : db.users.find({}).skip(1) 跳過條目數量

簡單分頁 :db.users.find({}).limit(每頁條目).skip(當前頁碼*每頁條目)
sort :db.users.find({}).sort({ age:1 }) 1:ASC -1:DESC

分頁排序多重用法:
db.users.find({}).sort({ age:-1 }).limit(2).skip(2)



pymongo
import pymongo

mongo = pymongo.MongoClient("127.0.0.1",27017)
MONGODB = mongo["SS2DAY04"]

查:
result = list(MONGODB.users.find({}))
for item in result:
print(item)
print(result)

result_one = MONGODB.users.find_one({})
print(result_one,type(result_one))
print(result_one.get("_id"),type(result_one.get("_id")))

增:
res = MONGODB.student.insert_one({"name":"yd","nickname":"wl"})
print(res.inserted_id,type(res.inserted_id))
res = MONGODB.student.insert_many([{"name":"yd","nickname":"wl"},{"name":"wpq","nickname":"cb"},{"name":"lj","nickname":"dsb"}])
print(res.inserted_ids)

刪:
MONGODB.student.remove({})
MONGODB.student.delete_one({"name":"yd"})
MONGODB.student.delete_many({"name":"yd"})

改:
MONGODB.student.update({"name":"yd"})
MONGODB.student.update_one({"name":"wpq"},{"$set":{"nickname":"peppa pig"}})
MONGODB.student.update_many({},{"$set":{"age":84}})


刪:
MONGODB.student.delete_many({})  # 值刪除所有資料
MONGODB.student.drop()  # 刪除表

分頁:
res = MONGODB.users.find({}).sort("age",pymongo.ASCENDING).limit(2).skip(0)
for i in res:
print(i)