python與mongodb的交互 增刪改差


首先引入包:
pip install pymongo

需要用到如下對象:
MongoClient對象:用於與MongoDB服務器建立連接
client=MongoClient('主機ip',端口)

DataBase對象:對應着MongoDB中的數據庫
db=client.數據庫名稱

Collection對象:對應着MongoDB中的集合
col=db.集合名稱

Cursor對象:查詢方法find()返回的對象,用於進行多行數據的遍歷
當調用集合對象的find()方法時,會返回Cursor對象
結合for...in...遍歷cursor對象


主要方法:
insert_one:加入一條文檔對象
insert_many:加入多條文檔對象
find_one:查找一條文檔對象
find:查找多條文檔對象
update_one:更新一條文檔對象
update_many:更新多條文檔對象
delete_one:刪除一條文檔對象
delete_many:刪除多條文檔對象


插入方法:
insert_one() 傳入一個字典,表示插入一個文檔
insert_many() 傳入一個列表,列表的元素為字典,插入多條文檔
 1 from pymongo import *
 2 '''
 3 插入方法:  4  insert_one() 傳入一個字典,表示插入一個文檔  5  insert_many() 傳入一個列表,列表的元素為字典,插入多條文檔  6 '''
 7 def insert():  8     try:  9         # 1 創建連接對象
10         client = MongoClient(host="localhost", port=27017) 11         # 2 獲取數據庫,
12         # 如果這個數據庫不存在,就在內存中虛擬創建
13         # 當在庫里創建集合的時候,就會在物理真實創建這個數據庫
14         db = client.demo    # 使用demo數據庫
15         # 向stu集合插入數據
16         # 插入一條
17         db.stu.insert_one({"name": "zs", "age": 20}) 18         # 插入多條
19         db.stu.insert_many([{"name": 1}, {"name": 2}]) 20     except Exception as e: 21         print(e) 22 
23 
24 if __name__ == '__main__': 25     insert()

 

查詢方法:
find_one()返回滿足條件的文檔集中第一條數據,類型為字典
如果沒有查詢結果返回None
方法find()返回滿足條件的所有文檔,類型為Cursor對象,可以使用for...in遍歷,每項為字典對象
如果沒有查詢結果返一個空的Cursor對象
 1 from pymongo import *
 2 '''
 3 查詢方法:  4  find_one()返回滿足條件的文檔集中第一條數據,類型為字典  5  如果沒有查詢結果返回None  6  方法find()返回滿足條件的所有文檔,類型為Cursor對象,可以使用for...in遍歷,每項為字典對象  7  如果沒有查詢結果返一個空的Cursor對象  8 '''
 9 def select(): 10     try: 11         # 1 創建連接對象
12         client = MongoClient(host="localhost", port=27017) 13         # 2 獲取數據庫,
14         # 如果這個數據庫不存在,就在內存中虛擬創建
15         # 當在庫里創建集合的時候,就會在物理真實創建這個數據庫
16         db = client.demo    # 使用demo數據庫
17         # 從stu查詢數據
18         # 查詢一條,返回一個字典,如果沒有結果返回None
19         res = db.stu.find_one({"age": 18}) 20         print(res) 21         # 查詢全部結果,返回一個Cursor可迭代對象,每一個元素是字典
22         # 如果沒有查詢結果會返回一個空的Cursor對象
23         res = db.stu.find({"age": {"$gt": 18}}) 24         print(res) 25     except Exception as e: 26         print(e) 27 
28 
29 if __name__ == '__main__': 30     select()

 

 

修改方法:
update_one()修改滿足條件的文檔集中的第一條文檔
update_many()修改滿足條件的文檔集中的所有文檔
注意:使用$set操作符修改特定屬性的值,否則會修改整個文檔
 1 from pymongo import *
 2 '''
 3 修改方法:  4  update_one()修改滿足條件的文檔集中的第一條文檔  5  update_many()修改滿足條件的文檔集中的所有文檔  6  注意:使用$set操作符修改特定屬性的值,否則會修改整個文檔  7 '''
 8 def update():  9     try: 10         # 1 創建連接對象
11         client = MongoClient(host="localhost", port=27017) 12         # 2 獲取數據庫,
13         # 如果這個數據庫不存在,就在內存中虛擬創建
14         # 當在庫里創建集合的時候,就會在物理真實創建這個數據庫
15         db = client.demo    # 使用demo數據庫
16         # 修改數據
17         # 修改第一條符合條件的數據,傳入條件和修改結果
18         db.stu.update_one({"age": 18},{"$set": {"age": 100}})  # 把年齡是18的第一條年齡改成100
19         # 所有符合條件數據都修改
20         # db.stu.update_many({"age": 18},{"$set": {"age": 100}}) # 年齡18的所有數據年齡改成100
21     except Exception as e: 22         print(e) 23 
24 
25 if __name__ == '__main__': 26     update()

 

 

刪除方法:
delete_one()刪除滿足條件的文檔集中第一條文檔
delete_many()刪除滿足條件的所有文檔
注意:使用$set操作符修改特定屬性的值,否則會修改整個文檔
 1 from pymongo import *
 2 '''
 3 刪除方法:  4  delete_one()刪除滿足條件的文檔集中第一條文檔  5  delete_many()刪除滿足條件的所有文檔  6  注意:使用$set操作符修改特定屬性的值,否則會修改整個文檔  7 '''
 8 def delete():  9     try: 10         # 1 創建連接對象
11         client = MongoClient(host="localhost", port=27017) 12         # 2 獲取數據庫,
13         # 如果這個數據庫不存在,就在內存中虛擬創建
14         # 當在庫里創建集合的時候,就會在物理真實創建這個數據庫
15         db = client.demo    # 使用demo數據庫
16         # 修改數據
17         # 修改第一條符合條件的文檔刪除
18         db.stu.delete_one({"age": 18})  # 把年齡是18的第一條文檔刪除
19         # 所有符合條件數據都刪除
20         db.stu.delete_many({"age": 18}) # 年齡18的所有文檔刪除
21     except Exception as e: 22         print(e) 23 
24 
25 if __name__ == '__main__': 26     delete()

 

 
        
案例:
使用python向集合t3中插入1000條文檔,文檔的屬性包括_id、name
_id的值為0、1、2、3...999
name的值為'py0'、'py1'...
查詢顯示出_id為100的整倍數的文檔,如100、200、300...,並將name輸出
 1 import pymongo  2 if __name__ == '__main__':  3     try:  4         # 1 獲得連接對象
 5         client = pymongo.MongoClient(host="localhost", port=27017)  6         # 2 獲取數據庫
 7         db = client.demo  8         # 3 執行業務邏輯 數據庫操作
 9         # 插入1000條數據
10 
11         for id in range(0,1000): 12             db.t3.insert_one({"_id": id, "name": "py%s"% id}) 13 
14         # 取出符合條件的數據
15         match = { 16             "$where": "function(){return this._id%100 == 0 }", 17  } 18         res = db.t3.find(match, {"_id": 0, "name": 1}) 19         for info in res: 20             print(info) 21 
22 
23     except Exception as e: 24         print(e)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM