pymongo的基本操作和使用


MongoDB簡介

MongoDB是一個開源的文檔類型數據庫,它具有高性能,高可用,可自動收縮的特性。MongoDB能夠避免傳統的ORM映射從而有助於開發。

文檔

在MongoDB中,一行紀錄就是一個文檔,它是一個由鍵值對構成的數據結構,MongoDB文檔與JSON對象類似。鍵的值可以包含其他的文檔,數組,文檔數組。

{
"_id" : ObjectId("5a55c9857c1ccc05bc71e9b0"),
"aid" : 2,
"view" : "--",
"danmaku" : 3564,
"reply" : 3564,
"favorite" : 2763,
"coin" : 924,
"share" : 1511,
"now_rank" : 0,
"his_rank" : 0,
"no_reprint" : 0,
"copyright" : 2
}

集合

MongoDB在集合中存儲文檔。集合類似於關系數據庫中的表。然而,與表不同的是集合不要求它里面的文檔具有相同的結構。
在MongoDB中,存儲在集合中的文檔必然有一個唯一的_id字段作為主鍵。

MongoDB安裝

MongoDB2.2版本之前不支持Windows XP,本教程使用的版本是最新的3.4的版本。為了方便操作和理解,所以選擇在Windows講解,生產環境請使用Linux版本。

設置MongoDB環境

MongoDB需要一個目錄來保存數據,默認的數據目錄是\data\db。在我的機器上使用下面的目錄作為數據目錄。
D:\data
你可以在啟動MongoDB的時候為它指定一個數據目錄。例如我們用如下命令啟動MongoDB:
D:\MongoDB\bin\mongod.exe --dbpath D:\data

連接MongoDB

使用mongo.exe命令連接。打開另一個命令行窗口,輸入如下命令:
'D:\MongoDb\bin\mongo.exe'
行些命令后,就能連接上MongoDB服務。由於沒有配置任何其他端口,也沒有配置權限認證,所以一切都是默認的本地連接,相當簡單。連接成功后,可以執行help命令,看看有什么內容。

安裝MongoDB服務

在沒有安裝服務之前,每次使用都需要先手動打開mongodb服務,才能連接。我們可以直接把MongoDB的服務安裝到計算機,啟動之后就不用每次手動打開服務了。
過執行mongod.exe,使用--install選項來安裝服務,使用--config選項來指定之前創建的配置文件。
"D:\MongoDB\bin\mongod.exe" --config "D:\MongoDB\mongod.cfg" --install
安裝完成之后通過net start MongoDB,啟動服務
net stop MongoDB 關閉服務

創建數據庫

語法
use DATABASE_NAME
切換到指定數據庫,如果不存在,就創建數據庫。
查看所有的數據庫
show databases databases可以簡寫成dbs

刪除數據庫

語法
db.dropDatabase()

刪除集合

db.collection.drop()

總結常用的操作符

1.比較操作符

$eq 匹配等於(=)指定值的文檔

> db.test.find({'students':{$eq:55}})

返回students等於55 的文檔。
\(gt 匹配大於(>)指定值的文檔 \)gte 匹配大於等於指定值的文檔
\(lt 匹配小於指定值的文檔 \)lte 小於等於
\(ne 不等於 \)in 匹配數組中的任意值

> db.test.find({'students':{$in:[55,54,56]}})

$nin 不匹配數組中的值

2.邏輯操作符

$or 或條件查詢

查詢students大於等於55或者title等於python_mongodb教學的文檔
> db.test.find({$or:[{'students':{$gte:55}},{'title':'python_MongoDB教學'}]})

\(and 與條件查詢 \)not 查詢和表達式不匹配的文檔
$nor 查詢與任一表達式都不匹配的文檔

> db.test.find({$nor:[{'students':{$gte:57}},{'title':'python_MongoDB教學'}]})

更新操作符

$inc 將文檔中的某個field對應的value自增/減某個數字amount

> db.test.update({'class':'爬蟲2班'},{$inc:{'students':1}}))

\(mul 將文檔中的某個field對應的value做乘法操作,同上。 \)rename 重名名文檔中指定的字段名字
$set 更新文檔中的某一個字段,而不是全部替換

> db.test.update({'students':116},{$set:{'students':56}})

插入數據

在MongoDB中,可以使用insert()方法和save方法插入一個文檔到MongoDB集合中,如果此集合不存在,MongoDB會自動為你創建。
先用命令行連接到MongoDB,再進入tz_mongo數據庫。
use tz_mongo
然后插入一個文檔到test集合,如果test集合不存在,這個操作會自己創建test集合。
例如:

> db.test.insert({'class':'爬蟲1班','students':50})
> db.test.save({'class':'爬蟲1班','students':50})
> db.test.find()
{ "_id" : ObjectId("5a586e8522dbc47846dd8e1f"), "class" : "爬蟲1班", "students" : 50 }
{ "_id" : ObjectId("5a586eae22dbc47846dd8e20"), "class" : "爬蟲1班", "students" : 50 }

在插入的文檔中,如果不指定_id參數,那么 MongoDB 會為此文檔分配一個唯一的ObjectId。
_id為集合中的每個文檔唯一的12個字節的十六進制數。

修改數據

MongoDB 使用 update() 和 save() 方法來更新集合中的文檔。接下來讓我們詳細來看下兩個函數的應用及其區別。
update() 方法。

update方法

update方法用於更新已經存在的文檔。

我們先在test里面插入條數據,然后再進行修改。
> db.test.insert({'title':'MongoDB教學'})
WriteResult({ "nInserted" : 1 })
> db.test.update({'title':'MongoDB教學'},{$set:{'title':'tz_MongoDB教學'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

然后再查看數據發現數據已經被修改。
這里set的作用是指更新文檔當中的某一個字段,如果不使用set,文檔會被直接替換。
update方法默認只更新一個文檔.如果需要更新多個文檔,需要指定multi參數

save方法

save() 方法通過傳入的文檔來替換已有文檔。

> db.test.save({'_id':ObjectId("5a586e8522dbc47846dd8e1f"),'class':'爬蟲1班','students':56})

查詢數據

mongo查詢數據使用的主要方法就是find。find方法以分結構化的方式來顯示所有文檔。
find方法可以傳入查詢條件來進行數據查詢。也可以不傳。

> db.test.find()
默認返回20條數據
> db.test.findOne()
返回一條數據
> db.test.find().limit(num)
返回num條數據,不超過20條
> db.test.find({'class':'爬蟲1班'})
通過給定的字段查詢
> db.test.find({'students':{$gte:58}})
查詢students大於等於58的數據
> db.test.find({$or:[{'students':58},{'students':55}]})
or操作符

刪除數據

使用remove()方法從集合中刪除文檔。這個方法需要一個條件文檔用來決定哪些文檔將被刪除。

> db.test.remove({'class':'爬蟲1班'})
刪除指定條件匹配的所有文件。
> db.test.remove({'class':'爬蟲1班'},{justOne:true})
刪除匹配條件的一條數據
> db.test.remove({})
刪除當前文檔
> db.test.drop()
刪除集合

刪除操作也會返回一個WriteResult對象,他包含了操作的狀態信息,nremoved字段值,表示被刪除的字段數量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM