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