python資料存放區系列教程——python中mongodb資料庫操作:串連、增刪查改、多級路徑,pythonmongodb

來源:互聯網
上載者:User

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"])
查看評論

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.