首先引入包:
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)