這個mongodb速成文章第二篇,第一篇最基礎的請看下面連接(但願給個贊哦,比心^^)mongodb
參數 | 含義 |
---|---|
-dbpath | 指定數據庫文件的目錄 |
--port | 端口 默認是27017 28017 |
--fork | 之後臺守護的方式進行啓動 |
--logpath | 指定日誌文件輸出路徑 |
--config | 指定一個配置文件 |
--auth | 以安全方式啓動數據庫,默認不驗證 |
首先須要創建一個mongo.conf文件,經過文件來啓動mongodb服務器json
把經常使用配置寫在一個文件裏,這樣不用每次都本身輸入參數,提升易維護性windows
dbpath=F:\mongo\data
logpath=F:\mongo
port=50001
複製代碼
注意data目錄要提早建立好安全
mongod --config mongo.conf
複製代碼
mongo --port 50001
複製代碼
這命令是保存成了文件格式bash
參數 | 含義 |
---|---|
-h [ --host ] | 鏈接的數據庫 |
--port | 端口號 |
-u | 用戶名 |
-p | 密碼 |
-d | 導出的數據庫 |
-d | 導出的數據庫 |
-c | 指定導出的集合 |
-o | 導出的文件存儲路徑 |
-q | 進行過濾 |
use c1;
var data =[
{name: "mx0", index: 0},
{name: "mx1", index: 1},
{name: "mx2", index: 2},
{name: "mx3", index: 3},
{name: "mx4", index: 4},
{name: "mx5", index: 5},
{name: "mx6", index: 6},
{name: "mx7", index: 7},
{name: "mx8", index: 8},
{name: "mx9", index: 9}
];
db.c1.insert(data);
db.c1.find();
複製代碼
2.2 備份記錄
mongoexport -h 127.0.0.1 --port 50001 -d c1 -c c1 -o c1.bak
複製代碼
2.3 刪除記錄
db.c1.remove({});
db.c1.find()
複製代碼
2.4 導入記錄 這時候再把數據導入進來
mongoimport -h 127.0.0.1 --port 50001 -d c1 -c c1 --file c1.bak
複製代碼
上面導出數據只能導出json格式的,但有時候咱們的mongodb會存2進制的數據,這個時候json不支持這種數據類型,因此須要咱們接下來的這種方式來導出數據。服務器
在Mongodb中咱們使用mongodump命令來備份MongoDB數據。該命令能夠導出全部數據到指定目錄中。架構
mongodump -h dbhost -d dbname -o dbdirectory
複製代碼
- | - |
---|---|
-h | MongDB所在服務器地址,例如:127.0.0.1,固然也能夠指定端口號:127.0.0.1:27017 |
-d | 須要備份的數據庫實例,例如:test |
-o | 備份的數據存放位置 |
mongodump -h 127.0.0.1:50001 -d c1 -o c1.dmp
複製代碼
3.2 mongorestore mongodb使用 mongorestore 命令來恢復備份的數據。
--host MongoDB所在服務器地址 --db -d 須要恢復的數據庫實例 最後的一個參數,設置備份數據所在位置 mongorestore data.dmpapp
mongorestore -h 127.0.0.1:50001 -d c2 c1.dmp/c1
複製代碼
爲了數據的完整性和一致性,導出前要先鎖定寫入,導出後再解鎖。post
> use admin;
switched to db admin
> db.runCommand({fsync:1,lock:1});
{
"info" : "now locked against writes, use db.fsyncUnlock() to unlock",
"seeAlso" : "http://dochub.mongodb.org/core/fsynccommand",
"ok" : 1
}
> db.fsyncUnlock();
{ "ok" : 1, "info" : "unlock completed" }
複製代碼
首先會把緩衝區數據暴力刷入硬盤,而後給數據庫一個寫入鎖,其餘實例的寫入操做所有被阻塞,直到fsync+lock釋放鎖爲止
show roles;
複製代碼
內置角色
- | - |
---|---|
數據庫用戶角色 | read、readWrite |
數據庫管理角色 | dbAdmin、dbOwner、userAdmin |
集羣管理角色 | clusterAdmin、clusterManager、clusterMonitor、hostManage |
全部數據庫角色 | readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase |
超級用戶角色 | root |
內部角色 | __system |
use admin;
db.createUser({user:'mx',pwd:'123456',roles:[{role:'read',db:'c1'}]});
複製代碼
db.runCommand({usersInfo:'mx',showPrivileges:true});
複製代碼
mongod --dbpath=F:\data --auth
複製代碼
use admin;
db.auth('mx','123456')
db.changeUserPassword('mx2','123');
db.auth('mx2','123')
複製代碼
var c1 = [
{provience:'北京',home:'北京',age:1},
{provience:'北京',home:'北京',age:2},
{provience:'北京',home:'北京',age:3},
{provience:'廣東',home:'廣州',age:1},
{provience:'廣東',home:'佛山',age:2},
{provience:'廣東',home:'東莞',age:3}
]
db.c1.insert(c1);
複製代碼
查看記錄數
db.c1.find().count();
複製代碼
distinct
db.runCommand({distinct:'c1',key:'home'}).values;
// [ "北京", "廣東" ]
複製代碼
db.runCommand({
group:{
ns:集合名稱,
key:分組的鍵,
initial:初始值,
$reduce:分解器
query:條件,
finalize:完成時的處理器
}
});
複製代碼
db.runCommand({
group: {
ns: 'c1',
key: { provience:1 },
query: {age:{$gt:1}},
initial: {total: 0},
$reduce:function(doc, initial){
initial.total+=doc.age
}
}
})
複製代碼
db.runCommand({drop:'c1'});
複製代碼
db.runCommand({buildInfo:1});
複製代碼
能夠看見有操做系統信息是windows,架構師x86_64,等等系統的信息
db.runCommand({getLastError:"c1"});
複製代碼
MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,對於大小固定,咱們能夠想象其就像一個環形隊列,當集合空間用完後,再插入的元素就會覆蓋最初始的頭部的元素!
db.createCollection('logs',{size:50,max:5,capped:true});
複製代碼
db.runCommand({convertToCapped:"logs",size:5});
複製代碼
- | - |
---|---|
-d | 數據庫的名稱 |
-l | 源文件的位置 |
put | 指定文件名 |
// test.txt必須建立在當前目錄
mongofiles -d myfiles put test.txt
複製代碼
mongofiles -d myfiles get 'test.txt'
複製代碼
mongofiles -d myfiles list
>db.fs.files.find()
>db.fs.chunks.find()
複製代碼
mongofiles -d myfiles delete "test.txt"
複製代碼