一 安裝 pymongo
pip install pymongo==3.4 ? 導入 MongoClient from pymongo import MongoClient
?
二 連接MongoDB數據庫
MongoDB端口號:27017 連接MongoDB我們需要使用PyMongo庫里面的MongoClient,一般來說傳入MongoDB的IP及端口即可,第一個參數為地址host,第二個參數為端口port,端口如果不傳默認是27017。 conn= MongoClient("localhost")
三 選擇數據庫
連接數據庫db = conn.數據庫名 連接集合collection = db['表名']orcollection = db.表名 查看表db.collection_names()
四 INSERT 數據的插入
(1) 插入一條數據
db.collection.insert({'name':'大壞蛋','age':23})
插入成功:返回ID
(2) 插入多條
db.collection.insert([{'name':'大壞蛋','age':23},{'name':'豬隊友','age':30}])
插入成功:返回ID的列表
[ObjectId('5a1642c4b96166349c2963eb'), ObjectId('5a1642c4b96166349c2963ec')]
(3) 3.2以上的插入函數
db.collection.insert_one() 插入一條數據
db.collection.insert_many() 插入多條數據,插入成功:返回obj
(4) 3.2以上獲取插入的id
db.collection.insert_one()返回的就是id
res = db.collection.insert_many() #返回的是對象
可以通過res.inserted_ids獲取插入多條的ID
五 find 查詢
(1) find 查詢
res = db.user.find() #返回的是游標對象 使用next() 方法 進行取值 print(res.next()); print(list(res)); #顯示全部 ? #遍歷 for obj in res:print(obj)
(2) 查詢一條
res = db.user.find_one(條件) #返回一條記錄
(3) 條件查詢
res = db.user.find({"name":"張三"}) for obj in res:print(obj)
(4)id查詢
from bson.objectid import ObjectId* #用于ID查詢 data = db.user.find({"_id":ObjectId("59a2d304b961661b209f8da1")})
(5)模糊查詢
MongoDB查詢條件可以使用正則表達式,從而實現模糊查詢的功能。模糊查詢可以使用$regex操作符或直接使 用正則表達式對象。
-
$regex
-
re.compile()
import re 使用 re.compile()
MySQL MongoDB select * from student where name like ’%joe%’ db.student.find({name:{"$regex":"壞"}}) select * from student where name regexp ’joe’ db.student.find({"name":re.compile("壞")) import re data = db.user.find({"name":{"$regex":"五"}}) data = db.user.find({"name":re.compile("五")})
注意 當匹配類型為 不是字符串的類型的時候 匹配不出來 data = db.user.find({"age":re.compile("30")}) data = db.user.find({"age":{"$regex":"3"}}) ret = collection.find({'name':re.compile(r'^郭')})
?
(6) sort 排序
#sort 排序 data = db.user.find().sort("age",1) #按照年齡升序 data = db.user.find().sort("age",-1) #按照年齡降序 for i in data:print(i) ?
(7) limit 取值
#limit 取值 print(next(db.user.find().sort("age",-1).limit(1))) #取出年齡最大的一條數據
(8) skip 跳過
#skip ? 跳過最大值 取第二大值 print(next(db.user.find().sort("age",-1).skip(1).limit(1))) #取出年齡最大的一條數據
?
六 update 修改
(1) db.collection.update(條件,更改)
data = db.user.update({"name":"潘金蓮"},{"$inc":{"age":2}}) ?#累加修改 data = db.user.update({"name":"潘金蓮"},{"$set":{"age":2}}) ?#直接修改 ? 更改成功 返回 數據:{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}
(2) update_one() 修改一條數據
data = db.user.update_one({"name":"王五"},{"$set":{"age":20}})
(3) update_many() 修改多條數據
data = db.user.update_one({"name":"王五"},{"$set":{"age":20}}) ?#修改多條
(4) update_one 和 update_many 返回匹配條數和修改的條數
result.matched_count 返回匹配條數 result.modified_count ? 返回修改的條數
七 remove 刪除
(1) remove 匹配到的全部刪除
db.collection.remove({條件})
(2) 刪除全部數據
db.collection.remove()
(3) 依然存在兩個新的推薦方法
delete_one()和delete_many()方法,示例如下: ? delete_one()即刪除第一條符合條件的數據 collection.delete_one({“name”:“ Kevin”}) ? delete_many()即刪除所有符合條件的數據,返回結果是DeleteResult類型 result = collection.delete_many({“age”: {'$lt':25}}) ? 可以調用deleted_count屬性獲取刪除的數據條數。 result.deleted_count
八 關閉數據庫鏈接
conn.close()