(1) mongodb的安裝
下載tgz解壓后,需要添加相應的環(huán)境變量才能在終端直接啟動mongod。
mongodb數據存儲在/data/db中,需要手動創(chuàng)建目錄樹,同時mongod執(zhí)行的時候如果權限不夠(不能往/data/db寫東西),需要改一下權限。
1
2
3
4
5
6
|
vim ~/.bashrc export PATH= "~/download/mongodb-linux-x86_64-ubuntu/bin:$PATH" mkdir -p /data/db ls -l / 查看data目錄的權限,發(fā)現擁有者可寫 ls -l /data 查看db目錄的權限,發(fā)現擁有者可寫 chown -R "liaohuqiang" /data data下的所有文件的擁有者改為自己 |
(2) mongod的啟動
之后就可以在終端上輸入mongod,這個時候就啟動了mongodb,但是這個時候是在終端運行著的,相當于一個前臺進程,在這個終端你不能做其它操作。
可以使用--fork選項,開啟后會回到終端交互,可以繼續(xù)做自己的事。
fork表示以守護進程的方式啟動mongodb,創(chuàng)建一個服務器進程。fork要配合logpath使用,表示日志信息輸出到哪個日志文件。logappend表示以追加的方式寫入日志文件。
當然還有別的啟動方式,目前還沒用到,暫時先不說。
1
|
mongod --fork --logappend ~ /mongo .log --logappend |
(3)mongo的使用
啟動mongod后就可以在終端進入mongo進行相關數據庫操作
1
2
3
4
5
6
7
8
9
10
11
12
|
show dbs 顯示所有數據庫 use doctor 切換到某個數據庫 "doctor" , 不切換的話默認使用 test db.dropDatabase() 刪除數據庫 show collections 顯示所有集合 db.sample.drop() 刪除集合 db.sample.insert({name: "pilgrimHui" , label: "1" }) 插入一行記錄 db.sample.insert({...}) 如果文檔已存在,會更新_id,不存在則同insert db.sample. find ({...}) 查找滿足條件的記錄,簡單的一些查詢條件見下面 db.sample. find ({...},{field1:1, field2:1}) 只找出某些字段 db.sample. find () 查找sample集合所有記錄 db.sample.remove({...},1) 刪除滿足條件的記錄,參數1可選,代表只刪除1個 db.sample.remove({}) 刪除sample集合的所有記錄 |
(4) mongo里的update操作
1
2
3
4
5
6
7
8
9
|
db.collection.update(criteria, objNew, upsert, multi) criteria: 查詢條件,理解為sql update語句where后面的 objNew: 更新操作,理解為sql update語句 set 后面的 upsert: 如果不存在查詢到的記錄,是否插入。默認 false ,不插入 multi: 是否更新多條。默認 false ,只更新第一條。 # 例如:把集合里所有記錄的status改為0 db.sample.update({ "status" : {$ ne : 0} }, {$ set : { "status" :0}}, {multi: true }) 或者 db.sample.update({ "status" : {$ ne : 0} }, {$ set : { "status" :0}}, false , true ) |
(4) 幾個查詢操作符
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$ ne 不等 $gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于 $ in 和$nin 是否在指定數組中 $all 是否全在指定數組中 $or 將數組中的多個鍵值對或運算 $slice:[1,2] 切片,取屬性值(數組)的某幾個 $size 該屬性值(數組)的長度 $exists: true 選擇該字段存在的記錄 $not 對任何查詢操作符取非 $regex 使用正則表達式匹配 |
(5) 幾個更新操作符
1
2
3
4
5
6
7
8
9
|
{ $inc : { field : value } } { $ set : { field : value } } { $ unset : { field : 1} } { $push : { field : value } } 追加,field要是數組 { $pull : { field : value } } 和push相反 { $pop : { field : 1 } } 刪除最后1個值 { $pop : { field : -1 } } 刪除第1個值 { $currentDate: { <field1>: {$ type : "date" , ... } } 設定當前時間 { $rename: {<field1>:<newName1>,<field2>:<newName2>,...} } 重命名字段 |
(6) 用戶權限設置
mongodb默認沒有帳號登錄,需要自己先添加帳號。
在admin數據庫添加的帳號為管理員帳號,在其它數據庫添加的帳號為普通用戶
用戶只能在用戶所在的數據庫登錄,包括管理員。
管理員只能在admin登錄認證后才能管理其它數據庫。
6.1 添加管理員帳號
1
2
|
use admin db.system. users . find () |
db.addUser('liaohuqiang','liaohuqiang')
添加管理員用戶,mongodb版本不同,可能會報錯,如果報錯找不到addUser則
用下面這個
1
2
3
4
5
6
7
|
db.createUser( { user: 'liaohuqiang' , pwd : 'liaohuqiang' , roles: [ { role: "userAdminAnyDatabase" , db: "admin" } ] } ) |
6.2 重新啟動mongod
創(chuàng)建成功后重啟mongod,這個時候開啟連接可以帶上--auth選項,代表驗證用戶權限。
1
|
mongod --fork --logappend ~ /mongo .log --logappend --auth |
6.3 認證登錄
開啟后,直接mongo進去操作會受限,可以mongo連接時授權登錄;也可以連接進去后再認證。
1
2
3
4
5
|
mongo -u liaohuqiang -p --authenticationDatabase admin mysql -h ip -u root -p 亂入,對比一下mysql的連接 mongo use admin db.auth( 'liaohuqiang' , 'liaohuqiang' ) |
6.4 關閉連接
認證登錄后就可以像之前那樣操作數據庫了,操作完后可以在admin數據庫關閉連接。
1
2
|
use admin db.shutdownServer() 關閉mongod |
(7) pymongo的連接
1
2
3
4
5
6
7
8
9
|
import pymongo client=pymongo.MongoClient( 'mongodb://username:password@ip' ) db=client[ 'doctor' ] users =db[ "user" ] result= list( users . find ( { 'role' :1}, { '_id' :0} ) ) 選多個 result= users .find_one({ "name" :name}) 選單個 users .insert_one({ "name" :name}) 插一個,會自動生成主鍵 users .remove( { "name" :name}, { "multi" :True} ) 刪多個 users .update_one({ 'name' :name},{ '$inc' :{ 'commitCount' :1}}) 改一個 |
總結
以上所述是小編給大家介紹的mongodb的安裝使用和pymongo基本使用教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!
原文鏈接:http://www.cnblogs.com/liaohuiqiang/archive/2017/07/18/7201291.html