您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Python操作MongoDB的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
需要使用Python
第三方庫pymongo
來連接以及操作MongoDB
,可以使用pip install pymongo
進行安裝。 可以使用下面代碼來創建一個MongoDB
的連接對象。
import pymongo client = pymongo.MongoClient(host='localhost', port=27017)
一般來說傳入兩個參數就可以,第一個參數為地址host(默認是localhost
)第二個參數為端口port(默認是27017)。
還有一種方法是host參數直接傳入MongoDB
的連接字符串,例如:
client = pymongo.MongoClient('mongodb://localhost:27017')
db = client.test # 或者 # db = client['test']
如果該數據庫不存在,則自動創建,否則切換到指定數據庫。 注意: 新創建的數據庫,在沒有插入數據之前在可視化工具里看不到。
MongoDB
的數據庫中包含很多集合collection
,類似于關系型數據庫中的表,同樣,我們可以使用下面和指定數據庫類似的方式,指定要操作的集合。
collection = db.users # 或者 collection = db['users']
調用collection的insert_one()
方法可以插入單條數據。
user = { 'name': 'tigeriaf', 'gender': 'male', 'age': 24 } collection.insert_one(user)
在MongoDB
中,每條數據都有一個唯一的_id屬性,如果沒有顯式的指明_id
,MongoDB
會自動生成ObjectId
類型的_id屬性。
當然我們也可以插入多條數據,使用的是insert_many()
方法,數據以列表形式傳遞。
user_list = [ { 'name': 'zhangsan', 'gender': 'male', 'age': 25 }, { 'name': 'lisi', 'gender': 'male', 'age': 24 }, { 'name': 'wangwu', 'gender': 'female', 'age': 24 } ] collection.insert_many(user_list)
通過find_one()
或find()
方法進行數據的查詢,find_one()
查詢返回單個結果,find()
返回多個結果。
result = collection.find_one({'name': 'tigeriaf'}) print(type(result), result)
我們查詢的是name
為tigeriaf
的數據,返回結果是字典類型,運行結果如下:
<class 'dict'> {'_id': ObjectId('614be85f1cc0a98d6f034de7'), 'name': 'tigeriaf', 'gender': 'male'}
對于多條數據的查詢,我們可以使用find()方法,例如在這里查找年齡為20的數據,示例如下:
results = collection.find({'gender': "male"}) print(results) for result in results: print(result)
運行結果如下:
<pymongo.cursor.Cursor object at 0x0BDF8210>
{'_id': ObjectId('614be85f1cc0a98d6f034de7'), 'name': 'tigeriaf', 'gender': 'male'}
{'_id': ObjectId('614beb3ad0f17d253e2ef81c'), 'name': 'zhangsan', 'gender': 'male'}
{'_id': ObjectId('614beb3ad0f17d253e2ef81d'), 'name': 'lisi', 'gender': 'male'}
返回結果是Cursor
類型,我們可以遍歷取到所有的結果。
可以調用count()
方法來統計查詢結果的條數。
count = collection.find({'gender': "male"}).count() print(count)
可以調用sort()方法對查詢的數據進行排序。
results = collection.find().sort('name', pymongo.ASCENDING) for result in results: print(result)
運行結果如下:
{'_id': ObjectId('614bf7fca5af6d1d46df0878'), 'name': 'lisi', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf72ab1b973eae1b32fee'), 'name': 'tigeriaf', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0877'), 'name': 'zhangsan', 'gender': 'male', 'age': 25}
在某些情況下我們可能只想獲取某幾條數據,可以使用skip()方法進行偏移操作,比如skip(2)
,就忽略前2條數據,得到第3條之后的數據。
results = collection.find().sort('name', pymongo.ASCENDING).skip(2) for result in results: print(result)
運行結果如下:
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0877'), 'name': 'zhangsan', 'gender': 'male', 'age': 25}
另外還可以使用limit()
方法限制結果個數。
results = collection.find().sort('name', pymongo.ASCENDING).skip(1).limit(2) for result in results: print(result)
運行結果如下:
{'_id': ObjectId('614bf72ab1b973eae1b32fee'), 'name': 'tigeriaf', 'gender': 'male', 'age': 24}
{'_id': ObjectId('614bf7fca5af6d1d46df0879'), 'name': 'wangwu', 'gender': 'female', 'age': 24}
可以使用update_one()
方法和update_many()
方法對數據進行更新,update_one()
方法更新一條數據,update_many()
方法更新多條數據。
condition = {'name': 'wangwu'} user = collection.find_one(condition) user['age'] += 1 result = collection.update_one(condition, {'$set': user}) print(result) print(result.matched_count, result.modified_count)
在這里調用了update_one()
方法修改name
為wangwu
的數據,第二個參數需要使用$類型操作符作為字典的鍵名,返回結果調用matched_count
和modified_count
屬性可以獲得匹配的數據條數和影響的數據條數。
運行結果如下:
<pymongo.results.UpdateResult object at 0x0C96E738>
1 1
調用update_many()
方法會更新所有符合條件的數據。
condition = {'age': 24} result = collection.update_many(condition, {'$inc': {'age': 1}}) print(result) print(result.matched_count, result.modified_count)
上述代碼指定了查詢條件為age
等于24,然后更新條件為{'$inc': {'age': 1}}
,也就是age
加1。
<pymongo.results.UpdateResult object at 0x0CB628A0> 2 2
可以看到更新了多條數據。
可以使用delete_one()
方法和delete_many()
方法刪除數據,delete_one()
方法刪除一條數據,delete_many()
方法刪除多條數據。
result = collection.delete_one({'name': 'zhangsan'}) print(result.deleted_count) result = collection.delete_many({'gender': "male"}) print(result.deleted_count)
運行結果如下:
1
2
delete_one()
刪除的是第一條符合條件的數據,delete_many()
刪除的是所有符合條件的數據。
感謝各位的閱讀!關于“Python操作MongoDB的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。