日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python3之MongoDB

發布時間:2023/12/18 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3之MongoDB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、MongoDB簡介

MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。

在高負載的情況下,添加更多的節點,可以保證服務器性能。

MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數組及文檔數組。

主要特點:

  • MongoDB 是一個面向文檔存儲的數據庫,操作起來比較簡單和容易。
  • 你可以在MongoDB記錄中設置任何屬性的索引 (如:FirstName="Sameer",Address="8 Gandhi Road")來實現更快的排序。
  • 你可以通過本地或者網絡創建數據鏡像,這使得MongoDB有更強的擴展性。
  • 如果負載的增加(需要更多的存儲空間和更強的處理能力) ,它可以分布在計算機網絡中的其他節點上這就是所謂的分片。
  • Mongo支持豐富的查詢表達式。查詢指令使用JSON形式的標記,可輕易查詢文檔中內嵌的對象及數組。
  • MongoDb 使用update()命令可以實現替換完成的文檔(數據)或者一些指定的數據字段 。
  • Mongodb中的Map/reduce主要是用來對數據進行批量處理和聚合操作。
  • Map和Reduce。Map函數調用emit(key,value)遍歷集合中所有的記錄,將key與value傳給Reduce函數進行處理。
  • Map函數和Reduce函數是使用Javascript編寫的,并可以通過db.runCommand或mapreduce命令來執行MapReduce操作。
  • GridFS是MongoDB中的一個內置功能,可以用于存放大量小文件。
  • MongoDB允許在服務端執行腳本,可以用Javascript編寫某個函數,直接在服務端執行,也可以把函數的定義存儲在服務端,下次直接調用即可。
  • MongoDB支持各種編程語言:RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。

MongoDB工具:

使用于MongoDB管理的工具包括監控工具和GUI

監控:

MongoDB提供了網絡和系統監控工具Munin,它作為一個插件應用于MongoDB中。

Gangila是MongoDB高性能的系統監視的工具,它作為一個插件應用于MongoDB中。

基于圖形界面的開源工具 Cacti, 用于查看CPU負載, 網絡帶寬利用率,它也提供了一個應用于監控 MongoDB 的插件。

GUI:

  • Fang of Mongo – 網頁式,由Django和jQuery所構成。
  • Futon4Mongo – 一個CouchDB Futon web的mongodb山寨版。
  • Mongo3 – Ruby寫成。
  • MongoHub – 適用于OSX的應用程序。
  • Opricot – 一個基于瀏覽器的MongoDB控制臺, 由PHP撰寫而成。
  • Database Master — Windows的mongodb管理工具
  • RockMongo — 最好的PHP語言的MongoDB管理工具,輕量級, 支持多國語言.

2、MongoDB安裝

(1)windows平臺安裝MongoDB

下載地址:https://www.mongodb.com/download-center#community

直接下載安裝文件,然后選擇安裝路徑安裝即可,安裝完成后通過系統服務啟動mongdb

(2)linux平臺安裝MongoDB

# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-4.0.0.tgz # tar xf mongodb-linux-x86_64-rhel62-4.0.0.tgz # mv mongodb-linux-x86_64-rhel62-4.0.0 /usr/local/mongod#echo "export PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile # . /etc/profile #創建數據目錄 # mkdir -p /data/db #啟動服務 # mongod

更多安裝詳細:https://docs.mongodb.com/manual/installation/

3、mongoDB基本操作

(1)創建操作

創建或插入操作將新的文檔添加到集合中,如果集合不存在則插入操作將創建該集合

db.collection.insertOne() ?插入單個文檔

db.collection.insertMany() ? 插入多個文檔

db.collection.insert() ?將單個或多個文檔插入到集合中

?

> db.dba.insertOne({item:"card",qty:15}) {"acknowledged" : true,"insertedId" : ObjectId("5b35cabe638a2654f3efaa8f") } > #指定_id插入文檔 > db.dba.insertOne({_id:1,item:"python",qty:100}) { "acknowledged" : true, "insertedId" : 1 }#插入多個文檔 > db.dba.insertMany([{_id:2,item:"java",qty:88},{_id:3,item:'javascript',qty:77},{_id:4,item:'django',qty:66}]) { "acknowledged" : true, "insertedIds" : [ 2, 3, 4 ] }

(2)查詢操作

讀取操作從集合中檢索文檔

db.collection.find()

> db.dba.find() #查詢集合所有> db.dba.find({_id:1}) #查詢_id為1的文檔> db.dba.find({_id:{$gt:2} }) #查詢_id大于2的文檔

(3)更新操作

db.collection.updateOne() ? 更新單個文檔

db.collection.updateMany() ?更新多個文檔

db.collection.replaceOne() ?替換文檔

db.dba.updateOne({item:"python"},{$set:{qty:111}}) #修改item為python的qty為111#將data字段更新為當前日期,如果不存在則創建該字段 db.dba.updateOne({item:"python"},{$currentDate:{data:true}}) #將_id大于2的文檔修改qty的值并設置date字段為當前時間 db.dba.updateMany({_id:{$gt:2}},{$set:{qty:"hello"},$currentDate:{date:true}})#將_id為1的字段替換掉 db.dba.replaceOne({_id:1},{_id:1,item:"abc",qty:333,data:2018})

(4)刪除操作

db.collection.deleteOne() ? #刪除一條文檔

db.collection.deleteMany() ? #刪除多條文檔

#刪除指定條件的一條文檔 db.dba.deleteOne({_id:1}) #刪除集合所有文檔 db.dba.deleteMany({})#刪除_id大于3的文檔 db.dba.deleteMany({_id:{$gt:3}})

4、python使用MongoDB

(1)安裝MongoDB驅動程序

pip install pymongo

(2)鏈接MongoDB

client=pymongo.MongoClient(host='localhost',port=27017) #或者 client=pymongo.MongoClient('mongodb://localhost:27017/')

(3)指定數據庫

db=client.dba #或者 db=client['dba']

(4)指定集合

collection=db.dba #或者 collection=db['dba']

(5)插入數據

#插入數據單條數據 student={'_id':1,'name':'python','age':200, } #result=collection.insert(student) #print(result) #返回一個InsertOneResult實例 #插入多條數據 suudentany=[{'_id':2,'name':'java','age':300},{'_id':3,'name':'javascript','age':400},{'_id':4,'name':'c++','age':500} ] #result=collection.insert_many(suudentany) #print(result) #print(result.inserted_ids) #顯示插入數據id列表

(6)查詢數據

result=collection.find_one({'name':'python'}) #查詢單條數據 print(type(result)) #返回字典類型 print(result) #查詢多條數據,需要迭代讀取 resultall=collection.find() for i in resultall:print(i)

過濾查詢匹配的文檔

resultfiter=collection.find({'age':{'$gt':300}}) #查詢age大于300的文檔 for i in resultfiter:print(i)# {'_id': 3, 'name': 'javascript', 'age': 400} {'_id': 4, 'name': 'c++', 'age': 500}

比較符號還有:$lt小于、$gt大于、$lte小于等于、$gte大于等于、$ne不等于、$in在范圍內、$nin不在范圍內

另外還可以用正則匹配$regex

result=collection.find({'name':{'$regex':'^p.*'}}) #匹配以P開頭的name

其他功能符號:$exists屬性是否存在、$type類型判斷、$mod數字余數、$text文本查詢、$shere條件查詢

更多詳細用法可以在MongoDB官網找到:https://docs.mongodb.com/manual/reference/operator/query/

(7)計數

要統計查詢結果有多少條數據,可以調用count()方法

count=collection.find().count() #或者統計符合條件的數據 count=collection.find({'age':20}).count()

(8)排序

排序時,直接調用sort()方法,并在其中傳入排序的字段及升降序標志即可

pymongo.ASCENDING為升序,pymongo.DESCENDING為降序

results=collection.find().sort('name',pymongo.ASCENDING)

(9)偏移

如只想去某幾個元素,可以利用skip()方法偏移位置來忽略前面的元素

results=collection.find().sort('name',pymongo.ASCENDING).skip(2) #只取第三個及后面的元素

另外還可以使用limit()方法指定要取的結果個數

results=collection.find().sort('name',pymongo.ASCENDING).skip(2).limit(2) #只取兩個結果

(10)更新

可以使用update()方法來更新數據,但此方法不夠安全可以使用$set它只 更新存在文檔內存在的字段

result=collection.update({'name':'python'},{'date':8}) #上面方法不安全,它會將除了_id和要更新的數據外的其他字段會被刪除 #使用$set會比較安全 result=collection.update({'name':'python'},{'$set':{'date':12}})

官方推薦使用update_one()和update_many()方法,來嚴格控制影響的字段,它需要使用$類型的操作字符來作為字典的鍵名

result=collection.update_one({'_id':3},{'$set':{'name':'javascript'}}) print(result) print(result.matched_count,result.modified_count) #打印匹配的數據條數和影響的數據條數#updata_many()會將所有符合條件的數據都更新 result=collection.update_many({'date':{'$gt':2}},{'$inc':{'data':10}}) #將所有date值大于2的文檔加上10

(11)刪除

刪除可以使用的方法有remove()符合條件的數據都會被刪除,delete_one()值刪除符合條件的第一條和delete_many()刪除所有符合條件的

result=collection.delete_one({'name':'java'}) result1=collection.delete_many({'data':{'$gt':20}})

(12)其他操作

pyMongo還提供了一些組合方法:

find_one_and_delete() ? 查找后刪除

find_one_and_replace() ?查找后替換

find_one_and_update() ?查找后更新

create_index() ? 在集合上創建索引

create_indexes() ?在集合上創建一個或多個索引

drop_index() ?刪除此集合上的索引

更多集合操作方法:http://api.mongodb.com/python/current/api/pymongo/collection.html

?pymongo的API文檔:http://api.mongodb.com/python/current/api/pymongo/index.html

轉載于:https://www.cnblogs.com/zhangxinqi/p/9242687.html

總結

以上是生活随笔為你收集整理的python3之MongoDB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。