更新時間:2021-04-01 來源:黑馬程序員 瀏覽量:
pymongo模塊中提供了4個對象與MongoDB數(shù)據(jù)庫進行交互,分別是MongoClient對象、DataBase對象、Collection對象和Cursor對象。
1. MongoClient對象
MongoClient對象用于建立與MongoDB數(shù)據(jù)庫的連接,它可以使用如下構(gòu)造方法進行創(chuàng)建:
MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)
以上方法中常用參數(shù)的含義如下:
host,表示主機地址,默認(rèn)為localhost。
port,表示連接的端口號,默認(rèn)為27017。
document_class,表示數(shù)據(jù)庫執(zhí)行查詢操作后返回文檔的類型,默認(rèn)為dict。
建立連接到MongoDB數(shù)據(jù)庫,示例如下:
client = MongoClient()
上述示例創(chuàng)建MongoClient對象時沒有傳入任何參數(shù),說明建立連接到默認(rèn)主機地址和端口的MongoDB數(shù)據(jù)庫。
也可以顯式地指定主機地址和端口號,示例如下:
client = MongoClient('localhost', 27017)
2. DataBase對象
DataBase對象表示一個數(shù)據(jù)庫,可以通過MongoClient對象進行獲取。通過上文創(chuàng)建的MongoClient對象client獲取數(shù)據(jù)庫,示例如下:
data_base = client.db_name
需要注意的是,使用以上兩種方式獲取數(shù)據(jù)庫時,若指定的數(shù)據(jù)庫db_name已經(jīng)存在,直接訪問db_name數(shù)據(jù)庫,否則創(chuàng)建一個數(shù)據(jù)庫db_name。
3. Collection對象
Collection對象包含一組文檔,代表MongoDB數(shù)據(jù)庫中的集合,類似于關(guān)系數(shù)據(jù)庫中的表,但它沒有固定的結(jié)構(gòu)。創(chuàng)建Collection對象的方式與創(chuàng)建數(shù)據(jù)庫的方式類似,例如,通過 data_base創(chuàng)建集合test_collection,代碼如下:
collection = db.test_collection
也可以采用訪問字典值的形式創(chuàng)建Collection對象:
collection = db['test-collection']
表1 Collection對象常用方法
方法 | 說明 |
---|---|
insert_one() | 向集合中插入一條文檔 |
insert_many() | 向集合中插入多條文檔 |
find_one() | 查詢集合中的一條文檔。若找到匹配的文檔,返回單個文檔,否則返回None |
find() | 查詢集合中的多條文檔。若找到匹配項,則返回一個Cursor對象 |
update_one() | 更新集合中的一條文檔 |
update_many() | 更新集合中的多條文檔 |
delete_one() | 從集合中刪除一條文檔 |
delete_many() | 從集合中刪除多條文檔 |
count_documents(filter) | 根據(jù)匹配條件filter統(tǒng)計集合中的文檔數(shù)量。若傳入空字典,則返回所有文檔的數(shù)量;若傳入帶有鍵值對的字典,則返回符合條件的文檔數(shù)量 |
值得一提的是,pymongo中使用字典來表示MongoDB數(shù)據(jù)庫的文檔,每個文檔中都有一個_ id屬性,用于保證文檔的唯一性,當(dāng)它們插入到集合中時若未提供_ id,會被MongoDB自動設(shè)置獨特的_id值。
4. Cursor對象
Cursor對象是通過Collection對象調(diào)用find()方法返回的查詢對象,該對象中包含有多條匹配的文檔,可結(jié)合for循環(huán)遍歷取出每條文檔。例如,使用insert_many()方法向collection中插入多條文檔,之后使用find()方法查詢匹配的文檔,代碼如下:
collection.insert_many([{'x': i} for i in range(2)]) cursor_obj = collection.find({'x': 1}) for document in cursor_obj: print(document)
猜你喜歡:
pymysql庫常用對象用法