1. 程式人生 > >python連線MongoDB資料庫方法及增刪改查等操作小結。

python連線MongoDB資料庫方法及增刪改查等操作小結。

Y9


  建議安裝MongoDB視覺化工具“Robo 3T”,可以很直觀的看到對MongoDB操作後的資料。


1、‘Robo 3T’的安裝,網上很多途徑可下載,在此分享我使用的版本:
連結:https://pan.baidu.com/s/1EcjmUVkXz1GQeTXy2fMk9g
提取碼:o1zd
① 資料庫啟動mongoDB後,開啟Robo 3T連線mongodb資料庫
在這裡插入圖片描述
② 儲存,連線。就可出現以下類似介面:
相關教程推薦部落格:https://blog.csdn.net/junshangshui/article/details/79371316
在這裡插入圖片描述

2、安裝pymongo模組
在cmd管理員模式下,執行 pip install pymongo




3、用Pycharm連線MongoDB
① 匯入模組:from pymongo import MongoClient
② 連線MongoDB資料庫:db = MongoClient(‘192.168.47.128’,27017)
③ 新增資料庫:my_db = db.my_db
④ 建立檔案:my_infor = my_db.my_infor


4、增刪改查以及條件查詢等基礎操作:

# 向檔案中插入資料
user = [{'name':'jiesen','age':15,'sex':'男'},{'name':'jiesen','age':35,'sex':'男'},{'name':'jiesen'
,'age':23,'sex':'男'}] # my_infor.insert(user) ''' insert():可以實現單條或多條資料的插入 save():只能完成單條資料的插入,並且資料必須是字典結構 ''' # 查詢資料 res = my_infor.find({'name':'jiesen'}) # for item in res: # print(item) # 更新資料 # multi: 布林型別, 設定資料更新時是否一次性更新多條資料, 預設為False # upsert: 設定資料更新時,如果資料不存在,是否將本次資料新增到檔案中,預設為False my_infor.
update({'name':'jiesen1'},{'$set':{'age':20,'sex':'woman'}},multi=True,upsert=True) # 刪除資料 # delete_one(): 刪除資料中一條資料 # delete_many(): 一次性刪除多條滿足的資料 # my_infor.delete_many({'name':'jiesen'}) # mongodb條件查詢: ''' > : $gt < : $lt >= : $gte <= : $lte $in:(m,n,) : 提取在指定內容中的資料 $all[n,m,...]: 查詢資料庫中某一條資料是否全部包含all中的資料, 如果'全部'包含則返回該條資料,否則不反悔 $push: 向已有資料來源中按照欄位進行資料的新增.基於'列表' $pop: 將資料庫中對應資料的某一個欄位資料按照指定方式進行刪除. 其中 -1:從列表的起始位置開始刪除; 1: 從列表的最後位置開始刪除 $pull: 將對應資料中指定的資料分佈進行刪除(按值刪除) $or : 或者指令, 該指令通常作為字典的鍵, 其對應的值是一個'列表'結構,列表中每一個元素之間是'並列'的關係. "在字典中所有的鍵值對之間代表的是一種'並且'的關係." .sort('age',1): 將查詢之後的結果按照指定的欄位進行排序, 1為升序,-1為降序 .skip(m).limit(n): 將查詢結果的取值顯示為,跳過m條資料,顯示n條資料. 即只顯示m+1~m+1+n的資料 ''' #例: #查詢年齡在[5,25]之間的所有資料 res = my_infor.find({ 'age':{'$gte':5,"$lte":25} }) # for item in res: # print(item) #查詢年齡15以下或25以上,name是jiesen的資料 res1 = my_infor.find({ '$or':[ {'age':{'$gte':25}}, {'age':{'$lte':15}} ], 'name':'jiesen' }) # $in: 提取在指定內容中的資料 res3 = my_infor.find({ 'age':{'$in':(15,23)} }) obj = { 'name':'ysh', 'sex':'男', 'age':77, 'photo':['img/1.jpg','img/2.jpg'], 'score':[12,15,17,90] } # my_infor.insert(obj) res4 = my_infor.find({ 'score':{'$all':[12,15,90]} }) # $push: 向已有資料來源中按照欄位進行資料的新增.基於'列表' # my_infor.update( # {'name':'ysh'}, #指定資料的條件 # {'$push':{'score':[103,120]}} # ) # $pop: 將資料庫中對應資料的某一個欄位資料按照指定方式進行刪除. 其中 -1:從列表的起始位置開始刪除; 1: 從列表的最後位置開始刪除 # $pull: 將對應資料中指定的資料分佈進行刪除(按值刪除) my_infor.update( {'name':'ysh'}, # {'$pop':{'score':1}}, {'$pull':{'score':90}} ) #多路查詢 res5 = my_infor.find({ 'score.0':{'$gt':10} }) obj1 = { 'name':'YSH', 'son':[ {'name':'ete','age':17}, {'name':"ete1",'age':15} ] } # my_infor.insert(obj1) res6 = my_infor.find({ 'son.1.age':15 }) for item in res6: print(item)

注意:以上註釋部分有的是為避免例子之間衝突,而註釋的執行語句。根據需要解除註釋。


個人小結,定有不足之處,歡迎指點。
謝謝~