Python操做MongoDB

1python



1.1 安裝pymongo模塊mongodb


pip install pymongo


不是吧,就這麼簡單?數據庫

是啊,因此說,要不要學點Python呢?app


Python鏈接MongoDBide

02學習



2.1 鏈接MongoDB測試


2.1.1 MongoDB運行在本機上
spa

MongoDB運行在本機,且沒有作任何配置(用蘭州拉麪的話來講,純真)。3d

from pymongo import MongoClient
client1 = MongoClient()
print(client1)


圖片


2.1.2 MongoDB無權限認證
code

無權限認證就是不須要用戶名密碼,直接輸入IP地址和端口就能夠鏈接數據庫。

from pymongo import MongoClient
client2 = MongoClient('mongodb://192.168.0.130:27017')
print(client2)


圖片


2.1.3 MongoDB需認證,且運行在其餘機器上

在MongoDB中建立一個Python用戶,專戶管理本文數據。

1) 切換數據庫到admin

圖片


2) 查看目前擁有的用戶

圖片


3) 建立ipart的讀寫用戶Python


4) Python用戶測試鏈接

from pymongo import MongoClient
client3 = MongoClient('mongodb://python:123456@192.168.0.130:27017')
print(client3)



2.2 指定MongoDB的數據庫和表


2.2.1 點點點方式

from pymongo import MongoClient
client = MongoClient('mongodb://192.168.0.130:27017')
database = client.ipart
collection = database.performer
print(database)
print(collection)



2.2.2 很明顯的方式

from pymongo import MongoClient
client = MongoClient('mongodb://192.168.0.130:27017')
db_name = 'ipart'
collection_name = 'perform'
database = client[db_name]
collection = database[collection_name]
print(database)
print(collection)



Python操做MongoDB

03



3.1 插入數據


3.1.1 Insert_one

插入一條數據。

collection.insert_one({'name':'小安','sex':'man','age':19,'job':'不自由學習者','story':'愛情公寓的隔壁','best_wishes':'不清楚'})
rows = collection.find()
print(rows)
print(type(rows))
print()
for row  in rows :
    print(row)



3.1.2 insert_many

顧名思義,一會兒插入N條數據。

data_list = [
{'name':'胡一菲','sex':'woman','age':23.5,'job':'彈一閃教師','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'陳美嘉','sex':'woman','age':23,'job':'呂子喬的老婆','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'唐悠悠','sex':'woman','age':22,'job':'專業演員','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'林宛瑜','sex':'woman','age':20,'job':'林氏才女','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'秦羽墨','sex':'woman','age':23,'job':'有錢人的追求者','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'諸葛大力','sex':'woman','age':19,'job':'最強大腦','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'咖喱醬','sex':'woman','age':19,'job':'吃貨','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'張大炮','sex':'man','age':25,'job':'二營長的大炮','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'呂子喬','sex':'man','age':26,'job':'鼓勵師','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'曾小賢','sex':'man','age':27,'job':'電臺主持人','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'關穀神奇','sex':'man','age':27,'job':'漫畫家','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'白開','sex':'man','age':100,'job':'小黑','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'陸展博','sex':'man','age':21,'job':'外星人','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'張益達','sex':'man','age':29,'job':'倒黴的好人','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'斯內克','sex':'man','age':99,'job':'','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'趙海棠','sex':'man','age':22,'job':'大文豪','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'張偉','sex':'man','age':26,'job':'律政先鋒','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'小則又沐風','sex':'woman','age':21,'job':'呂子喬的虛幻情人','story':'愛情公寓','best_wishes':'不清楚'},
{'name':'呂小布','sex':'man','age':25,'job':'僚機呂布','story':'愛情公寓','best_wishes':'不清楚'}
]
collection.insert_many(data_list)
rows_all = collection.find()
for row in rows_all:
    print(row)


3.2 查詢數據

查詢數據,有find_one和find,通常使用find。

3.2.1 find_one

找出第一條數據咯,什麼條件都不用加,這這這有卵用啊?我是高手高手高高手,我用find,我驕傲,好吧!

圖片


3.2.2 find

舉個栗子~

# 限定查詢條件   --$lt 少於,$gt 大於,$ne 不等於
rows_select = collection.find({'age':{'$lte':25,'$gt':21},
                         'name':{'$ne':'張大炮'}  }   )
for row in rows_select:
    print(row)


圖片

若是對find的語法不是很熟悉,請點擊下面推文連接。

 MongoDB入門教程


3.3 更新數據


3.3.1 普通update_one

更新一條符合條件的數據,若是有多條數據符合,則從上往下開始更新,一次更新一條。

collection.update_one({'name':'張益達'},{'$set':{'age':100}})
rows_update1 = collection.find({'name':'張益達'})
for row in rows_update1:
    print(row)


圖片


3.3.2 另類update_one

有一種更新叫做沒有該數據"我"就插入,有"我"就更新,怎麼樣,是否是很霸道!

# update_one & upsert
collection.update_one({'name':'蟑螂鼠'},{'$set':{'age':999,'story':'愛情公寓'}},upsert=True)
rows_update2 = collection.find({'age':{'$gt':100}})
for row in rows_update2:
    print(row)


圖片


3.3.3 update_many

一次性更新全部符合條件的數據。

# update_many
collection.update_many({'story':'愛情公寓'},{'$set':{'story':'愛情公寓1-5','best_wishes':'感謝陪伴,贊!'}})
rows_update3 = collection.find({}).limit(5)
for row in rows_update3:
    print(row)


圖片


3.4 刪除數據


3.4.1 delete_one

刪除一條符合條件的數據,若是有多條數據符合,則從上往下開始刪除,一次刪除一條。

# delete_one
collection.delete_one({'name':'小安'})
rows_delete1 = collection.find({'name':'小安'})
for row in rows_delete1:
    print(row)


圖片


3.4.2 delete_many

一次性刪除全部符合條件(sex='man')的數據。

# delete_many
collection.delete_many({'sex':'man'})
rows_delete2 = collection.find({})
for row in rows_delete2:
    print(row)


圖片


注意細節

04



Python操做mongoDB進行增刪改查和mongoDB增刪改查,雖然有不少方面都是很是類似的,可是仍是有一些小細節須要注意。

4.1 空值

1) MongoDB操做

db.getCollection('performer').find({'sex':null})


圖片


2)Python操做

# MongoDB null,Python None
# rows_1 = collection.find({'sex':null})  ,此爲錯誤代碼
rows_1 = collection.find({'sex':None})
for row in rows_1:
    print(row)


圖片


4.2 布爾值

1) MongoDB操做

db.getCollection('performer').find({'human':false})


圖片


2)Python操做

# MongoDB true/false,Python True/False
# collection.update_one({'name':'蟑螂鼠'},{'$set':{'human':False}})  
rows_1 = collection.find({'human':False})
for row in rows_1:
    print(row)


圖片


4.3 排序

1) MongoDB操做

db.getCollection('performer').find().sort({'age':-1}).limit(3)


圖片


2)Python操做

# MongoDB sort,Python sort
rows_3 = collection.find({},{'_id':0}).sort('age',-1).limit(3)
for row in rows_3 :
    print(row)


圖片


4.4 查詢_id列

1) MongoDB操做

db.getCollection('performer').find({'_id':ObjectId('5e513716cd21cd029f3600bb')})  


圖片


2)Python操做

from bson import ObjectId

rows_4 = collection.find({'_id':ObjectId('5e513716cd21cd029f3600bb')})  
for row in rows_4 :
    print(row)


圖片

相關文章
相關標籤/搜索