首頁(yè)技術(shù)文章正文

pymongo常用的幾種交互對(duì)象【Python技術(shù)文章】

更新時(shí)間:2021-04-01 來(lái)源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif


pymongo模塊中提供了4個(gè)對(duì)象與MongoDB數(shù)據(jù)庫(kù)進(jìn)行交互,分別是MongoClient對(duì)象、DataBase對(duì)象、Collection對(duì)象和Cursor對(duì)象。

1. MongoClient對(duì)象

MongoClient對(duì)象用于建立與MongoDB數(shù)據(jù)庫(kù)的連接,它可以使用如下構(gòu)造方法進(jìn)行創(chuàng)建:

MongoClient(host='localhost', port=27017, document_class=dict, tz_aware=False, connect=True, **kwargs)

以上方法中常用參數(shù)的含義如下:

host,表示主機(jī)地址,默認(rèn)為localhost。

port,表示連接的端口號(hào),默認(rèn)為27017。

document_class,表示數(shù)據(jù)庫(kù)執(zhí)行查詢操作后返回文檔的類型,默認(rèn)為dict。

建立連接到MongoDB數(shù)據(jù)庫(kù),示例如下:

client = MongoClient()

上述示例創(chuàng)建MongoClient對(duì)象時(shí)沒有傳入任何參數(shù),說(shuō)明建立連接到默認(rèn)主機(jī)地址和端口的MongoDB數(shù)據(jù)庫(kù)。

也可以顯式地指定主機(jī)地址和端口號(hào),示例如下:

client = MongoClient('localhost', 27017)

2. DataBase對(duì)象

DataBase對(duì)象表示一個(gè)數(shù)據(jù)庫(kù),可以通過MongoClient對(duì)象進(jìn)行獲取。通過上文創(chuàng)建的MongoClient對(duì)象client獲取數(shù)據(jù)庫(kù),示例如下:

data_base = client.db_name

需要注意的是,使用以上兩種方式獲取數(shù)據(jù)庫(kù)時(shí),若指定的數(shù)據(jù)庫(kù)db_name已經(jīng)存在,直接訪問db_name數(shù)據(jù)庫(kù),否則創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)db_name。

3. Collection對(duì)象

Collection對(duì)象包含一組文檔,代表MongoDB數(shù)據(jù)庫(kù)中的集合,類似于關(guān)系數(shù)據(jù)庫(kù)中的表,但它沒有固定的結(jié)構(gòu)。創(chuàng)建Collection對(duì)象的方式與創(chuàng)建數(shù)據(jù)庫(kù)的方式類似,例如,通過 data_base創(chuàng)建集合test_collection,代碼如下:

collection = db.test_collection

也可以采用訪問字典值的形式創(chuàng)建Collection對(duì)象:

collection = db['test-collection']

表1 Collection對(duì)象常用方法

方法說(shuō)明
insert_one()向集合中插入一條文檔
insert_many()向集合中插入多條文檔
find_one()查詢集合中的一條文檔。若找到匹配的文檔,返回單個(gè)文檔,否則返回None
find()查詢集合中的多條文檔。若找到匹配項(xiàng),則返回一個(gè)Cursor對(duì)象
update_one()更新集合中的一條文檔
update_many()更新集合中的多條文檔
delete_one()從集合中刪除一條文檔
delete_many()從集合中刪除多條文檔
count_documents(filter)根據(jù)匹配條件filter統(tǒng)計(jì)集合中的文檔數(shù)量。若傳入空字典,則返回所有文檔的數(shù)量;若傳入帶有鍵值對(duì)的字典,則返回符合條件的文檔數(shù)量

值得一提的是,pymongo中使用字典來(lái)表示MongoDB數(shù)據(jù)庫(kù)的文檔,每個(gè)文檔中都有一個(gè)_ id屬性,用于保證文檔的唯一性,當(dāng)它們插入到集合中時(shí)若未提供_ id,會(huì)被MongoDB自動(dòng)設(shè)置獨(dú)特的_id值。

4. Cursor對(duì)象

Cursor對(duì)象是通過Collection對(duì)象調(diào)用find()方法返回的查詢對(duì)象,該對(duì)象中包含有多條匹配的文檔,可結(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庫(kù)常用對(duì)象用法

【Python面經(jīng)題】爬蟲數(shù)據(jù)為什么選擇Mongodb存儲(chǔ)?

怎樣理解Python中的面向?qū)ο螅?/a>    

黑馬程序員Python+數(shù)據(jù)分析培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!