今天來學(xué)習(xí)一個(gè)新的數(shù)據(jù)庫,叫做MongoDB數(shù)據(jù)庫,我們先來了解一下MongoDB數(shù)據(jù)庫的概念,再一起學(xué)習(xí)如何使用MongoDB數(shù)據(jù)庫吧~
10年積累的成都做網(wǎng)站、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有淮北免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
MongoDB是專為 可擴(kuò)展性、高性能和高可用性 而設(shè)計(jì)的數(shù)據(jù)庫,MongoDB的庫中由一個(gè)或多個(gè)collections組成,這里的collection相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表;
MongoDB中的記錄是一個(gè)document文檔,它是由字段和值對(duì)組成的數(shù)據(jù)結(jié)構(gòu),MongoDB文檔類似于JSON對(duì)象,字段的值可以包括其他文檔,數(shù)組和文檔數(shù)組;
MongoDB支持的數(shù)據(jù)類型有: Int、Double, String, Object, Array, Binary data, Undefined, Boolean, Date, Null 等;
db.help() 查看庫級(jí)別的命令
db.mycoll.help() 查看collection級(jí)別的命令
sh.help() 查看發(fā)片的命令
rs.help() 查看副本集的命令
help admin 查看管理相關(guān)的命令
help connect 查看連接到數(shù)據(jù)庫的命令
help keys keys的相關(guān)命令
help misc misc things to know
help mr 查看mapreduce相關(guān)的命令
show dbs 查看當(dāng)前的數(shù)據(jù)庫
show collections 查看數(shù)據(jù)庫中所有的collections
show users 當(dāng)前的數(shù)據(jù)庫中有哪些用戶
show profile 顯示profile信息,顯示性能評(píng)估工具
show logs 顯示日志名信息
show log [name] 顯示指定查看對(duì)應(yīng)日志的信息
use <db_name> 進(jìn)入某庫,設(shè)定某庫為當(dāng)前庫
db.foo.find() 列出當(dāng)前collection中所有的document
db.foo.find( { a : 1 } ) 列出當(dāng)前collection中a = 1的document
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x 設(shè)置顯示的item的行數(shù)
exit 退出Mongo shell
db.students.insert()
:插入一條數(shù)據(jù),默認(rèn)會(huì)創(chuàng)建students表;
show collections
:顯示當(dāng)前的表;
db.students.stats()
:顯示students表的數(shù)據(jù)信息;
db.students.find()
:查詢插入的各個(gè)字段;
db.students.count()
:查看students表中有多少個(gè)document;
db.students.remove({"name": "Angle"})
# 刪除表
db.students.drop()
# 刪除當(dāng)前數(shù)據(jù)庫
db.dropDatabase()
比較操作:
$gt
:大于;
db.students.find({age: {$gt: 10}}) age大于10
$gte
:大于等于;
db.students.find({age: {$gte: 20}}) age大于等于20
$lt
:小于;
db.students.find({age: {$lt: 30}}) age小于30
$lte
:小于等于;
db.students.find({age: {$lte: 40}}) age小于等于40
$in
:在范圍內(nèi);
db.students.find({age: {$in: [10, 20]}}) age在[10, 20]的document
$nin
:不在范圍內(nèi);
db.students.find({age: {$nin: [30, 40]}}) age不在[30, 40]的document
邏輯運(yùn)算:
$or
:或運(yùn)算;
db.students.find({$or: [{name: {$eq: "robby"}}, {age: {$nin: [40,50]}}]})
$and
:與運(yùn)算;
$not
:非運(yùn)算;
$nor:
取反運(yùn)算;
$exists
:查詢存在某字段的document;
如查詢存在name字段的document
db.students.find({name: {$exists: true}})
$mod
:取摸;
$type
:返回指定字段的值類型為指定類型的document;
$set
:更新,或插入字段的值;
將name為Tom的這個(gè)document的age字段的值改為20
db.students.update({name: "Tom"}, {$set: {age: 20}})
$unset
:刪除指定字段;
刪除name字段為Tom的document的age為25的字段
db.students.update({name: "Tom"}, {$unset: {age: 25}}
$rename
:修改字段名;
給name字段為Tom的document增加一個(gè)字段sex且值為男
db.students.update({name: "Tom"}, {$inc: {sex: "男"}})
# 創(chuàng)建用戶
db.createUser({user:"root",pwd:"123456", roles: [{ role: "root", db: "admin" }]});
# 刪除用戶
db.system.users.remove({user:"root"});
方法中的
user
用于指定用戶名、
pwd
用于設(shè)置密碼、
roles
用于指定用戶的角色,可以用一個(gè)空數(shù)組給新用戶設(shè)定空角色、
db
用于指定用戶對(duì)哪個(gè)數(shù)據(jù)庫具有管理員權(quán)限;
createUser()方法
為數(shù)據(jù)庫創(chuàng)建新用戶,如果用戶已存在于數(shù)據(jù)庫中,則db.createUser()返回重復(fù)的用戶錯(cuò)誤;
數(shù)據(jù)庫用戶角色
:
read
(允許用戶讀取指定數(shù)據(jù)庫)、
readWrite
(允許用戶讀寫指定數(shù)據(jù)庫 );
數(shù)據(jù)庫管理角色
:
dbAdmin
(允許用戶在指定數(shù)據(jù)庫中執(zhí)行管理函數(shù))、
dbOwner
、
userAdmin
(允許用戶向system.users集合寫入);
集群管理角色
:
clusterAdmin
(賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限)、
clusterManager
、
clusterMonitor
、
hostManager
;
備份恢復(fù)角色
:
backup
、
restore
;
所有數(shù)據(jù)庫角色
:
readAnyDatabase
、
readWriteAnyDatabase
(賦予用戶所有數(shù)據(jù)庫的讀權(quán)限 )、
userAdminAnyDatabase
(賦予用戶所有數(shù)據(jù)庫的讀寫權(quán)限 )、
dbAdminAnyDatabase
(賦予用戶所有數(shù)據(jù)庫的dbAdmin權(quán)限);
超級(jí)用戶角色
:
root
(超級(jí)賬號(hào),超級(jí)權(quán)限);
內(nèi)部角色
:
__system
;
MongoDB中的索引與MySQL中的索引有類似的功能,將表中的字段添加索引,索引會(huì)將字段做排序,依次索引能夠大大提高M(jìn)ongoDB的查詢能力
索引是特殊的數(shù)據(jù)結(jié)構(gòu),它以易于遍歷的形式存儲(chǔ)集合數(shù)據(jù)集的一小部分,索引存儲(chǔ)特定字段或字段集的值,按字段值排序;
索引條目的排序支持有效的等式匹配和基于范圍的查詢操作;
MongoDB可以使用索引中的順序返回排序結(jié)果;
db.students.createIndex({name: 1})
給name字段創(chuàng)建索引, 1為指定按升序創(chuàng)建索引,如果你想按降序來創(chuàng)建索引指定為-1即可
# 查看索引
db.students.getIndexes()
# 查看是否使用到了索引(由于MongoDB調(diào)優(yōu))
db.students.find({"name": "Angle"}).explain() # winningPlan的stage為fetch,非COLLSCAN(字段掃描)
# 刪除索引
db.student.dropIndex("name_1")
# 給name字段創(chuàng)建一個(gè)唯一鍵索引,那么再給students表增加一條行document,且name與之前存在的document的name值相同,那么就會(huì)報(bào)錯(cuò), 如:增加一條document
db.students.createIndex({name: 1}, {unique: true})
db.students.insert({name: "Angle"})
報(bào)錯(cuò)的信息如下:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: test.students.$name_1 dup key: { : \"Angle\" }"
}
})
參考: https://www.9xkd.com/user/plan-view.html?id=1609408774
文章標(biāo)題:MongoDB的使用
本文來源:http://aaarwkj.com/article44/iijdhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站導(dǎo)航、定制網(wǎng)站、網(wǎng)站改版、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)