啟動 :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}
)
比較運算符
等于
小于 lte
大于 gte
不等于 $ne
eg: db.集合.find(
{'time':{$gt:100},
{'actor':'李連杰'}
} )
邏輯或 $or
db.集合.find(
{
gt:100}},
{actor:'李連杰'}
]
} )
邏輯或$or和and一起使用
db.集合.find(
{
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使
用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
`