MongoDB

啟動 :sudo service mongod |mongodb start
停止 :sudo service mongod |mongodb stop
重啟 :sudo service mongod |mongodb restart

設置配置文件

mongod.conf
可以設置數據的存儲路徑 | 設置log日志的存儲路徑 | 設置端口號
設置IP | 開啟權限

啟動mongo客戶端 : mongo

net start mongo : windows

關于數據庫的基本命令

查看當前數據庫 : db

查看所有數據庫 :show dbs

創(chuàng)建集合 :

db.createCollection(name, options) 要切換到數據庫下才能創(chuàng)建集合
(name是要創(chuàng)建的集合的名稱剑按,options是一個文檔)

eg:非固定大小的集合 : db.createCollection('info')
固定大小的集合 : db.createCollection('info', {capped:True,
size:10, (指定集合的大小)(優(yōu)先級更高)
(集合存滿時默勾,新數據會覆蓋之前的數據) max: (可選)指定固定集合中包含文檔的最大數量})

刪除數據庫 :db.dropDatabase() (切換到數據庫才能刪除)

使用數據庫 :use dbname

查看當前數據庫信息 :db.stats

查看集合 :show collections

刪除集合 :db.集合名稱.drop()

增刪改查

插入文檔

(插入文檔時谱轨,如果不指定_id參數退客,MongoDB會為文檔分配一個唯一的ObjectId离咐,是主鍵惹资,也是索引)
db.集合名稱.insert(document)

單條插入:

db.stu.insert(
    {
        _id:'20201226',
        name:'xxxx',gender:1
    }
        )

多條插入:

db.stu.insert(
    [
        {name:'王明',gender:1},
        {name:'王玲玲',gender:0}
    ]
)

更新數據

全文檔更新(一個新文檔替換之前的文檔填物,ID不變)

db.集合名稱.update(
{name:'zhangsan'}, 查詢條件
{name:'lisi',class:'1712B'} 新的文檔
{ upsert : 默認情況下為false,要更新的文檔不存在岸军,不會插入一條新的數據,
multi : 默認為false, 只更新查找到的第一條备典,為True表示更新所有
}
)

局部更新

db.stu.update(
{name:'zhangsan'}, 查找條件
{
$set:{name:'lisi'} { upsert : 默認情況下為false,要更新的文檔不存在异旧,不會插入一條新的數據,
multi : 默認為false, 只更新查找到的第一條提佣,為True表示更新所有
}
}
)

更新多條

db.stu.update(
{name:'李自成'},
{
$set:{gender:0}
},
{multi:true}
)

save()會根據_id進行查找,如果文檔的_id已經存在則修改吮蛹,如果文檔的_id不存在則添加

eg: db.集合名稱.save(
{
_id:'20180820101010',
'name':'zhangsan'
}
)

格式化輸出

db.集合名稱.find().pretty()

刪除數據庫

db.dropDatabase(數據庫名)

刪除數據(多條)

db.集合名稱.remove(
{'key':'value'} 條件
)

刪除單條

db.集合名稱.remove(
{'key':'value'}, 條件
1 (不表示數量拌屏,表示的是True(False))
)

列出集合內所有信息

db.集合名稱.find()

查詢全部

db.集合名稱.find(
{age:20,gender:1}
)

查詢一條

db.集合名稱.findOne(
{age:20,gender:1}
)

比較運算符

等于
小于 lt 小于等于lte
大于 gt 大于等于gte
不等于 $ne

eg: db.集合.find(
{'time':{$gt:100},
{'actor':'李連杰'}
} )

邏輯或 $or

db.集合.find(
{
or:[ {time:{gt:100}},
{actor:'李連杰'}
]
} )

邏輯或$or和and一起使用

db.集合.find(
{
or:[ {age:{gte:18}},
{gender:1}
],
name:'gj'
}
)

范圍運算符

$in:在..范圍 $nin:不在...范圍

db.movie.find(
{
times:{$in:[100,120]}
}
)

使用正則查詢

db.集合名稱.find(
{
'key':/^正則表達式/
}
)

db.集合名稱.find(
{
'key':{$regex:'正則表達式'}
}
)

$type:只返回符合數據類型的文檔

db.集合名稱.find(
{
'key':{$type:'數據類型'}
}
)

limit:限制返回

skip:跳過指點的條數

db.集合名稱.find().limit(num).skip(num)
注意:limit和skip先后順序不影響結果

sort:進行排序 1:升序 -1:降序

db.集合名稱.find().sort({'key':方向(1 or -1),'key2':方向(1 or -1)})

distinct:實現(xiàn)去重

db.集合名稱.distinct(
'去重字段',
{'條件'}
)

project(投影):可以選擇查詢結果中,數據的展示和隱藏

0表示隱藏,1顯示

db.集合名稱.find(
{'條件'},
{'key':1}
)

假如再設置要顯示的字段時,第一個字段設置為1,只展示這一個其他都不展示,反之,只隱藏當前設置的字段,其他的字段都會展示粗來

count:統(tǒng)計文檔的個數

db.集合名稱.count(
{條件}
)

db.集合名稱.find({條件}).count()

mongodb中的聚合操作,主要是處理數據(求和,平均值),

將處理后的數據返回

"""
$group:將集合中的文檔分組潮针,可用于統(tǒng)計結果。

$project:修改輸入文檔的結構倚喂∶颗瘢可以用來重命名瓣戚、增加或
刪除域,也可以用于創(chuàng)建計算結果以及嵌套文檔焦读。

match:用于過濾數據子库,只輸出符合條件的文檔。match使
用MongoDB的標準查詢操作矗晃。

$limit:用來限制MongoDB聚合管道返回的文檔數仑嗅。

$skip:在聚合管道中跳過指定數量的文檔,并返回余下的文
檔张症。

$unwind:將文檔中的某一個數組類型字段拆分成多條仓技,每條
包含數組中的一個值。

$sort:將輸入文檔排序后輸出俗他。
"""

創(chuàng)建超級管理用戶

use admin
db.createUser(

    {    user:'admin',
          pwd:'123',
        roles:[{role:'root',db:'admin'}]
    }
   )

修改普通用戶權限或密碼

修改用戶:可以修改pwd浑彰、roles屬性

注意這里只有超級管理員才有權限修改普通用戶的密碼和管理權限

修改用戶密碼(切換到有權限操作的數據庫下)

db.updateUser(‘ljh',{pwd:'456'})

添加用戶權限(切換到有權限操作的數據庫下)
db.grantRolesToUser('username',[{role:'',db:''}])

移除用戶權限(切換到有權限操作的數據庫下)
db.revokeRolesFromUser('username',[{role:'',db:''}])

刪除用戶(方式一)(切換到有權限操作的數據庫下)
db.dropUser('username')

刪除用戶 (方式二)
use admin db.system.users.remove({user:'username'})

MongoDB備份

在Mongodb中我們使用mongodump命令來備份MongoDB數據。該命令可以導出所有數據到指定目錄中拯辙。

mongodump -h dbhost -d dbname -o dbdirectory

-h: MongDB所在服務器地址郭变,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017

-d: 需要備份的數據庫實例涯保,例如:test

-o: 備份的數據存放位置诉濒,例如:c:\data\dump,當然該目錄需要提前建立夕春,在備份完成后未荒,系統(tǒng)自動在dump目錄下建立一個test目錄,這個目錄里面存放該數據庫實例的備份數據及志。

如果沒有開啟權限

mongodump -h 127.0.0.1:27017 -d 數據庫名稱 -o ~/Desktop/數據庫備份的路徑

mongodump -h 127.0.0.1:27017 -o ~/Desktop/數據庫備份的路徑

如果開啟了權限設置(使用超級管理員權限)我們也可以使用賬號密碼的方式備份指定用戶的數據庫

  • 設置了超級管理員也可以使用如下方法備份

mongodump -u username -p password --authenticationDatabase 'admin' -d dbname -o dbpath

恢復備份

mongodb使用 mongorestore 命令來恢復備份的數據片排。

mongorestore -h hostname:port -d dbname --dir path

-h (host): MongoDB所在服務器地址,默認為: localhost:27017

-d (db): 需要恢復的數據庫實例速侈,例如:test率寡,當然這個名稱也可以和備份時候的不一樣,比如test2

--dir: 指定備份的目錄

如果沒有開啟權限

mongorestore -h 127.0.0.1:27017 -d 數據庫名稱 --dir 數據庫備份文件路徑

mongorestore -h 127.0.0.1 -dir 數據庫備份文件路徑

下面是添加了管理員權限之后的備份命令

如果開啟了權限設置(使用超級管理員權限)

mongorestore -u username -p password --authenticationDatabase 'admin' -d 數據庫名稱 --dir 數據庫備份文件路徑

MongoDB數據導入與導出
導出工具:mongoexport

mongoexport -d dbname -c collectionname -o file --type json/csv -f field

參數說明:

d :數據庫名
c :collection名
o :輸出的文件名
-type : 輸出的格式倚搬,默認為json
f :輸出的字段冶共,如果-type為csv,則需要加上-f "字段名"

示例:

導出json

mongoexport -d class1804 -c books -o ~/桌面/dump/books.json --type json

導出csv

mongoexport -d class1804 -c books -o ~/桌面/dump/books.csv --type csv -f 'by_user,likes'

數據導入:mongoimport

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv

參數說明:

d:數據庫名
c:collection名
-type:導入的格式默認json
f:導入的字段名
-headerline:如果導入的格式是csv每界,則可以使用第一行的標題作為導入的字段
-file:要導入的文件

示例:

導入json

mongoimport -d class1712B -c books --file ~/桌面/dump/books --type json

導入csv

mongoimport -d class1712B -c info --file ~/桌面/dump/books --headerline --type csv

`

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末捅僵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子眨层,更是在濱河造成了極大的恐慌庙楚,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件趴樱,死亡現(xiàn)場離奇詭異馒闷,居然都是意外死亡酪捡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門窜司,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人航揉,你說我怎么就攤上這事塞祈。” “怎么了帅涂?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵议薪,是天一觀的道長。 經常有香客問我媳友,道長斯议,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任醇锚,我火速辦了婚禮哼御,結果婚禮上,老公的妹妹穿的比我還像新娘焊唬。我一直安慰自己恋昼,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布赶促。 她就那樣靜靜地躺著液肌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸥滨。 梳的紋絲不亂的頭發(fā)上嗦哆,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音婿滓,去河邊找鬼老速。 笑死,一個胖子當著我的面吹牛凸主,可吹牛的內容都是我干的烁峭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼秕铛,長吁一口氣:“原來是場噩夢啊……” “哼约郁!你這毒婦竟也來了?” 一聲冷哼從身側響起但两,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤鬓梅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谨湘,有當地人在樹林里發(fā)現(xiàn)了一具尸體绽快,經...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡芥丧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了坊罢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片续担。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖活孩,靈堂內的尸體忽然破棺而出物遇,到底是詐尸還是另有隱情,我是刑警寧澤憾儒,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布询兴,位于F島的核電站,受9級特大地震影響起趾,放射性物質發(fā)生泄漏诗舰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一训裆、第九天 我趴在偏房一處隱蔽的房頂上張望眶根。 院中可真熱鬧,春花似錦边琉、人聲如沸汛闸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸老。三九已至,卻和暖如春钳恕,著一層夾襖步出監(jiān)牢的瞬間别伏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工忧额, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厘肮,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓睦番,卻偏偏與公主長得像类茂,于是被迫代替她去往敵國和親掰伸。 傳聞我的和親對象是個殘疾皇子摇邦,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容

  • 日出之前 是日落以后 黑夜無法長久 就偏偏喜歡 摸索再伸手 你在身后 還在左右 魂牽夢縈 不假思索 光陰短短 還...
    要多帥氣的昵稱呢閱讀 52評論 0 0
  • 朋友圈一位關系不錯的攝影師發(fā)了一組關于失戀的照片。照片中的女孩兒雙目緊閉椅寺,凌亂的頭發(fā)擋住了她的半邊臉示启,黑白的底色遮...
    陰雪巖閱讀 1,000評論 0 0
  • 【姓名】劉洛彤 【派別】文魁派 【導師】王玉印兢哭、袁文魁 【總舵主】焦點 【舵主】朱麗娜 用開端發(fā)展高潮結局來總結的...
    文魁大腦劉洛彤落桐閱讀 662評論 3 3
  • 本文參加#漫步青春#征文活動 作者:葛曼琪 本人承諾:文章內容為原創(chuàng),且未在其他平臺發(fā)布 駐足 你站在橋上看風景 ...
    嬗瑀閱讀 219評論 0 0