mongodb的安裝使用和pymongo基本使用教程
(1) mongodb的安裝
下載tgz解壓后,需要添加相應(yīng)的環(huán)境變量才能在終端直接啟動(dòng)mongod。
mongodb數(shù)據(jù)存儲(chǔ)在/data/db中,需要手動(dòng)創(chuàng)建目錄樹,同時(shí)mongod執(zhí)行的時(shí)候如果權(quán)限不夠(不能往/data/db寫東西),需要改一下權(quán)限。
vim ~/.bashrc export PATH="~/download/mongodb-linux-x86_64-ubuntu/bin:$PATH" mkdir -p /data/db ls -l / 查看data目錄的權(quán)限,發(fā)現(xiàn)擁有者可寫 ls -l /data 查看db目錄的權(quán)限,發(fā)現(xiàn)擁有者可寫 chown -R "liaohuqiang" /data data下的所有文件的擁有者改為自己
(2) mongod的啟動(dòng)
之后就可以在終端上輸入mongod,這個(gè)時(shí)候就啟動(dòng)了mongodb,但是這個(gè)時(shí)候是在終端運(yùn)行著的,相當(dāng)于一個(gè)前臺(tái)進(jìn)程,在這個(gè)終端你不能做其它操作。
可以使用--fork選項(xiàng),開啟后會(huì)回到終端交互,可以繼續(xù)做自己的事。
fork表示以守護(hù)進(jìn)程的方式啟動(dòng)mongodb,創(chuàng)建一個(gè)服務(wù)器進(jìn)程。fork要配合logpath使用,表示日志信息輸出到哪個(gè)日志文件。logappend表示以追加的方式寫入日志文件。
當(dāng)然還有別的啟動(dòng)方式,目前還沒用到,暫時(shí)先不說(shuō)。
mongod --fork --logappend ~/mongo.log --logappend
(3)mongo的使用
啟動(dòng)mongod后就可以在終端進(jìn)入mongo進(jìn)行相關(guān)數(shù)據(jù)庫(kù)操作
show dbs 顯示所有數(shù)據(jù)庫(kù) use doctor 切換到某個(gè)數(shù)據(jù)庫(kù)"doctor", 不切換的話默認(rèn)使用test db.dropDatabase() 刪除數(shù)據(jù)庫(kù) show collections 顯示所有集合 db.sample.drop() 刪除集合 db.sample.insert({name:"pilgrimHui", label:"1"}) 插入一行記錄 db.sample.insert({...}) 如果文檔已存在,會(huì)更新_id,不存在則同insert db.sample.find({...}) 查找滿足條件的記錄,簡(jiǎn)單的一些查詢條件見下面 db.sample.find({...},{field1:1, field2:1}) 只找出某些字段 db.sample.find() 查找sample集合所有記錄 db.sample.remove({...},1) 刪除滿足條件的記錄,參數(shù)1可選,代表只刪除1個(gè) db.sample.remove({}) 刪除sample集合的所有記錄
(4) mongo里的update操作
db.collection.update(criteria, objNew, upsert, multi) criteria: 查詢條件,理解為sql update語(yǔ)句where后面的 objNew: 更新操作,理解為sql update語(yǔ)句set后面的 upsert: 如果不存在查詢到的記錄,是否插入。默認(rèn)false,不插入 multi: 是否更新多條。默認(rèn)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) 幾個(gè)查詢操作符
$ne 不等 $gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于 $in和$nin 是否在指定數(shù)組中 $all 是否全在指定數(shù)組中 $or 將數(shù)組中的多個(gè)鍵值對(duì)或運(yùn)算 $slice:[1,2] 切片,取屬性值(數(shù)組)的某幾個(gè) $size 該屬性值(數(shù)組)的長(zhǎng)度 $exists:true 選擇該字段存在的記錄 $not 對(duì)任何查詢操作符取非 $regex 使用正則表達(dá)式匹配
(5) 幾個(gè)更新操作符
{ $inc : { field : value } } { $set : { field : value } } { $unset : { field : 1} } { $push : { field : value } } 追加,field要是數(shù)組 { $pull : { field : value } } 和push相反 { $pop : { field : 1 } } 刪除最后1個(gè)值 { $pop : { field : -1 } } 刪除第1個(gè)值 { $currentDate: { <field1>: {$type:"date", ... } } 設(shè)定當(dāng)前時(shí)間 { $rename: {<field1>:<newName1>,<field2>:<newName2>,...} } 重命名字段
(6) 用戶權(quán)限設(shè)置
mongodb默認(rèn)沒有帳號(hào)登錄,需要自己先添加帳號(hào)。
在admin數(shù)據(jù)庫(kù)添加的帳號(hào)為管理員帳號(hào),在其它數(shù)據(jù)庫(kù)添加的帳號(hào)為普通用戶
用戶只能在用戶所在的數(shù)據(jù)庫(kù)登錄,包括管理員。
管理員只能在admin登錄認(rèn)證后才能管理其它數(shù)據(jù)庫(kù)。
6.1 添加管理員帳號(hào)
use admin db.system.users.find()
db.addUser('liaohuqiang','liaohuqiang')
添加管理員用戶,mongodb版本不同,可能會(huì)報(bào)錯(cuò),如果報(bào)錯(cuò)找不到addUser則
用下面這個(gè)
db.createUser( { user: 'liaohuqiang', pwd: 'liaohuqiang', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
6.2 重新啟動(dòng)mongod
創(chuàng)建成功后重啟mongod,這個(gè)時(shí)候開啟連接可以帶上--auth選項(xiàng),代表驗(yàn)證用戶權(quán)限。
mongod --fork --logappend ~/mongo.log --logappend --auth
6.3 認(rèn)證登錄
開啟后,直接mongo進(jìn)去操作會(huì)受限,可以mongo連接時(shí)授權(quán)登錄;也可以連接進(jìn)去后再認(rèn)證。
mongo -u liaohuqiang -p --authenticationDatabase admin mysql -h ip -u root -p 亂入,對(duì)比一下mysql的連接 mongo use admin db.auth('liaohuqiang', 'liaohuqiang')
6.4 關(guān)閉連接
認(rèn)證登錄后就可以像之前那樣操作數(shù)據(jù)庫(kù)了,操作完后可以在admin數(shù)據(jù)庫(kù)關(guān)閉連接。
use admin db.shutdownServer() 關(guān)閉mongod
(7) pymongo的連接
import pymongo client=pymongo.MongoClient('mongodb://username:password@ip') db=client['doctor'] users=db["user"] result= list(users.find( {'role':1}, {'_id':0} ) ) 選多個(gè) result= users.find_one({"name":name}) 選單個(gè) users.insert_one({"name":name}) 插一個(gè),會(huì)自動(dòng)生成主鍵 users.remove( {"name":name}, {"multi":True} ) 刪多個(gè) users.update_one({'name':name},{'$inc':{'commitCount':1}}) 改一個(gè)
總結(jié)
以上所述是小編給大家介紹的mongodb的安裝使用和pymongo基本使用教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
基于Mongodb分布式鎖解決定時(shí)任務(wù)并發(fā)執(zhí)行問(wèn)題
這篇文章主要介紹了基于Mongodb分布式鎖解決定時(shí)任務(wù)并發(fā)執(zhí)行問(wèn)題,網(wǎng)上有很多分布式鎖的實(shí)現(xiàn)方案,基于redis、zk、等有很多,但是我的就是一個(gè)用了mysql和mongo的小應(yīng)用,本文給大家詳細(xì)講解,需要的朋友可以參考下2023-04-04利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫(kù)的步驟
這篇文章主要給大家介紹了關(guān)于如何利用golang驅(qū)動(dòng)操作MongoDB數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11毫不費(fèi)力!在Ubuntu上安裝MongoDB7.0的簡(jiǎn)易指南!
MongoDB是一種流行的NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng),用于處理大量結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),本文提供了在Ubuntu上安裝MongoDB?7.0的詳細(xì)步驟,以下步驟包含了在Ubuntu系統(tǒng)中安裝MongoDB的必要軟件包、配置MongoDB數(shù)據(jù)目錄、配置MongoDB數(shù)據(jù)庫(kù)的認(rèn)證方式等信息,需要的朋友可以參考下2023-10-10MongoDB數(shù)據(jù)庫(kù)查詢性能提高40倍的經(jīng)歷分享
大家在使用 MongoDB 的時(shí)候有沒有碰到過(guò)性能問(wèn)題呢?下面這篇文章主要給大家分享了MongoDB數(shù)據(jù)庫(kù)查詢性能提高40倍的經(jīng)歷,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-02-02MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解
這篇文章主要介紹了MongoDB中的主從同步配置和mongod相關(guān)啟動(dòng)命令講解,文中也羅列了很多其他常用的mongod命令參數(shù),需要的朋友可以參考下2016-03-03MongoDB快速入門及其SpringBoot實(shí)戰(zhàn)教程
MongoDB是一個(gè)開源、高性能、無(wú)模式的文檔型數(shù)據(jù)庫(kù),當(dāng)初的設(shè)計(jì)就是用于簡(jiǎn)化開發(fā)和方便擴(kuò)展,是NoSQL數(shù)據(jù)庫(kù)產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門及其SpringBoot實(shí)戰(zhàn),感興趣的朋友一起看看吧2023-12-12MongoDB Remove函數(shù)的3個(gè)常見用法
這篇文章主要介紹了MongoDB Remove函數(shù)的3個(gè)常見用法,需要的朋友可以參考下2014-05-05關(guān)于MongoDB謹(jǐn)防索引seek的效率問(wèn)題詳析
這篇文章主要給大家介紹了關(guān)于MongoDB謹(jǐn)防索引seek的效率問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11