python資料存放區系列教程——python中mongodb資料庫操作:串連、增刪查改、多級路徑,pythonmongodb
全棧工程師開發手冊 (作者:陳玓玏)
python教程全解
調試環境python3.6,調試python操作mongodb資料庫,首先要在本地或伺服器安裝mongodb資料庫。安裝參考:http://blog.csdn.net/luanpeng825485697/article/details/79353263
在python3.6下我們使用pymongo庫。
pip install pymongo
安裝python庫的方法,請查看Python庫的安裝與卸載
安裝成功後就可以編程代碼實現python對mongodb資料庫的操作了
python3.6操作mongodb資料庫前請先確保mongodb服務已經開啟
python3.6下代碼如下
#python3.6操作mongodb資料庫。使用前請先確保mongodb服務已經開啟print("=====================mongodb資料庫=====================")from pymongo import MongoClientfrom bson.objectid import ObjectId# 串連資料庫conn = MongoClient('127.0.0.1', 27017)db = conn.mydb # 指定資料庫名稱,串連mydb資料庫,沒有則自動建立my_set=db.test_set #使用test_set集合,沒有則自動建立# 插入資料(insert插入一個列表多條資料不用遍曆,效率高, save需要遍曆列表,一個個插入)users=[{"name":"zhangsan","age":18},{"name":"lisi","age":20}]my_set.insert(users) # insert可以插入一個對象或者對象列表user={"name":"zhangsan","age":18,'li':[1,2,3,4,5,5]}my_set.save(user) # save只能插入一個對象#返回插入的IDprint(my_set.inserted_ids)# 查詢資料(查詢不到則返回None)#查詢全部alluser = my_set.find() # 資料集合pymongo.cursor.Cursor類型#查詢name=zhangsan的alluser = my_set.find({"name":"zhangsan"})#查詢時的in操作alluser = my_set.find({"age":{"$in":(20,30,35)}})# 查詢時的or操作alluser = my_set.find({"$or":[{"age":20},{"age":35}]})# 查詢時的all操作alluser = my_set.find({'li':{'$all':[1,2,3,4]}}) # 輸出...'name': 'zhangsan', 'age': 18, 'li': [1, 2, 3, 4, 5, 6]}#查詢集合中age大於25的所有記錄alluser = my_set.find({"age":{"$gt":15}}) #(>) 大於 - $gt, (<) 小於 - $lt, (>=) 大於等於 - $gte (<= ) 小於等於 - $lte#找出name的類型是String的alluser = my_set.find({'name':{'$type':2}})# Double 1# String 2# Object 3# Array 4# Binary data 5# Undefined 6 已廢棄# Object id 7# Boolean 8# Date 9# Null 10# Regular Expression 11# JavaScript 13# Symbol 14# JavaScript (with scope) 15# 32-bit integer 16# Timestamp 17# 64-bit integer 18# Min key 255 Query with -1.# Max key 127# 資料集排序alluser.sort([("age",1)]) #在MongoDB中使用sort()方法對資料進行排序,sort()方法可以通過參數指定排序的欄位,並使用 1 和 -1 來指定排序的方式,其中 1 為升序,-1為降序。#limit()方法用來讀取指定數量的資料#skip()方法用來跳過指定數量的資料alluser.skip(2).limit(6) #下面表示跳過兩條資料後讀取6條# 遍曆資料集for i in alluser: print(i)# 統計print(alluser.count())# 查詢一個記錄print(my_set.find_one({"name":"zhangsan"}))print(my_set.find_one({'_id':ObjectId('5a8fd9f047d14523ec6d377c')}))# 更新資料# my_set.update(# <query>, #查詢條件# <update>, #update的對象和一些更新的操作符# {# upsert: <boolean>, #如果不存在update的記錄,是否插入# multi: <boolean>, #可選,mongodb 預設是false,只更新找到的第一條記錄# writeConcern: <document> #可選,拋出異常的層級。# }# )#修改欄位的值my_set.update({"name":"zhangsan"},{'$set':{"age":20}})db.col.update({'_id':ObjectId('5a8fd9f047d14523ec6d377c')},{'$set':{'age':'33'}})# 列表欄位添加新元素my_set.update({'name':"lisi"}, {'$push':{'li':4}}) # 在name為lisi的記錄中的li欄位中添加元素4my_set.update({'name':"lisi"}, {'$push':{'li':[8,9]}}) # 在name為lisi的記錄中的li欄位中添加元素4、5# 列表欄位移除元素my_set.update({'name':"lisi"}, {'$pop':{'li':1}}) # pop 移除最後一個元素(-1為移除第一個)my_set.update({'name':"lisi"}, {'pull':{'li':3}}) #pull (按值移除) 移除3my_set.update({'name':"lisi"}, {'$pullAll':{'li':[1,2,3]}}) # pullAll (按值移除全部合格)# 刪除資料# my_set.remove(# <query>, #(可選)刪除的文檔的條件# {# justOne: <boolean>, #(可選)如果設為 true 或 1,則只刪除一個文檔# writeConcern: <document> #(可選)拋出異常的層級# }# )#刪除name=lisi的全部記錄my_set.remove({'name': 'lisi'})#刪除name=zhangsan的某個id的記錄id = my_set.find_one({"name":"zhangsan"})["_id"]my_set.remove(id)#刪除集合裡的所有記錄db.users.remove()# ===========多級路徑元素=========# 字典的屬性值可以是另一個字典或者列表# 增加dict = {"name":"zhangsan", "age":18, "contact" : { "email" : "1234567@qq.com", "iphone" : "11223344"}, "contact1" : [ { "email" : "111111@qq.com", "iphone" : "111"}, { "email" : "222222@qq.com", "iphone" : "222"} ] }my_set.insert(dict)# 查詢users=my_set.find({"contact.iphone":"11223344"})user = my_set.find_one({"contact.iphone":"11223344"}) # 查詢字典值user1 = my_set.find_one({"contact1.1.iphone":"222"}) # 查詢數組值# 列印輸出print(user["contact"]["email"])# 修改result = my_set.update({"contact.iphone":"11223344"},{"$set":{"contact.email":"9999999@qq.com"}})result = my_set.update({"contact.1.iphone":"222"},{"$set":{"contact.1.email":"222222@qq.com"}})print(user1["contact1"][1]["email"])
查看評論