1. 程式人生 > 實用技巧 >Python操作三大資料庫 - MongoDB

Python操作三大資料庫 - MongoDB

前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

以下文章來源於我偶像龜叔 ,作者我偶像龜叔

1、pymongo安裝

pipinstallpymongo

2、MongoClient連線(連線池)

MongoClient是MongoDB的客戶端代理物件,可以用來執行增刪查改操作,而且還內建了連線池。

=import pymongo
client = pymongo.MongoClient(host='localhost', port=27017) #建立連線池

3、建立資料庫與集合

建立資料庫與集合後,需要在集合插入資料,資料庫與集合才會真正建立。

_db = client['test_database'] #建立資料庫
_col = _db['test_collection'] #建立集合

4、新增資料

新增資料後,資料庫與集合才是真正意義上的建立完成:

# 插入單條資料
data = {
    "author": "Mike",
    "tags": ["mongodb", "python", "pymongo"],
}
# 此處插入一條資料,列印結果資料庫與集合都建立了
insert = _col.insert_one(data) # <pymongo.results.InsertOneResult object at 0x0000000003E99488>
_col_id = insert.inserted_id
print(client.list_database_names()) # 結果:['test_database']
print(_db.list_collection_names()) # 結果:['test_collection']

# 批量插入資料
many_data = [
    {
        "author": "Mike",
        "tags": ["mongodb", "python", "pymongo"],
    },
    {
        "author": "Eliot",
        "tags": ["java", "docker", "Spring"],
    }
]
insert_many = _col.insert_many(many_data) # <pymongo.results.InsertManyResult object at 0x0000000003E99408>
_col_ids = insert_many.inserted_ids

5、查詢、修改、刪除資料

示例程式碼如下:

# 查詢單個集合
info = _col.find_one()
info_2 = _col.find_one({'author': 'Mike'}) #帶條件

# 查詢全部集合
infoAll = _col.find()
infoAll_2 = _col.find({'_id': _col_id}) #帶條件

# -------------------------find end-----------------------

# 修改資料
where = {'author': 'Mike'}
update = {'$set': {'author': 'Mike_2'}}
_col.update_one(where, update)
_col.update_many(where, update)

# -------------------------update end-----------------------

# 刪除資料
where = {'author': 'Mike'}
_col.delete_one(where) #刪除條件單條資料
_col.delete_many(where) #刪除條件多條資料
_col.delete_many({}) #刪除所有資料
_col.drop() #刪除集合

6、雜項

示例程式碼如下:

# 統計數量
count = _col.count_documents({}) #花括號條件為空

# 排序
sort = _col.find({}).sort('author')

7、索引

示例程式碼如下:

'''
    索引 
    pymongo.ASCENDING : 1
    pymongo.DESCENDING : -1
    索引對排序的規則:
    1、單鍵索引:排序規則可以是任意方向
    2、複合索引:所有的鍵必須'全部相同'與'全部不相同'
    該部落格有很好的解釋:https://blog.csdn.net/jerryJavaCoding/article/details/82317840
'''
_col.create_index([("a", pymongo.DESCENDING)])
_col.create_indexes({'a': pymongo.ASCENDING, 'b': pymongo.DESCENDING})
_col.drop_index('a')