中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

朝陽(yáng)區(qū)社會(huì)建設(shè)工作室網(wǎng)站高效統(tǒng)籌疫情防控和經(jīng)濟(jì)社會(huì)發(fā)展

朝陽(yáng)區(qū)社會(huì)建設(shè)工作室網(wǎng)站,高效統(tǒng)籌疫情防控和經(jīng)濟(jì)社會(huì)發(fā)展,花的網(wǎng)頁(yè)設(shè)計(jì)模板素材,上海關(guān)鍵詞排名優(yōu)化怎樣文章目錄 一、數(shù)據(jù)庫(kù)操作二、集合操作三、文檔操作3.1 插入文檔3.2 查詢文檔3.3 更新文檔3.4 刪除文檔 四、安全認(rèn)證4.1 創(chuàng)建管理員賬號(hào)4.2 創(chuàng)建應(yīng)用數(shù)據(jù)庫(kù)用戶4.3 啟動(dòng)和連接 (校驗(yàn)方式) 提示:以下是本篇文章正文內(nèi)容,MongoDB 系列學(xué)習(xí)將會(huì)持續(xù)更新 一…

文章目錄

  • 一、數(shù)據(jù)庫(kù)操作
  • 二、集合操作
  • 三、文檔操作
    • 3.1 插入文檔
    • 3.2 查詢文檔
    • 3.3 更新文檔
    • 3.4 刪除文檔
  • 四、安全認(rèn)證
    • 4.1 創(chuàng)建管理員賬號(hào)
    • 4.2 創(chuàng)建應(yīng)用數(shù)據(jù)庫(kù)用戶
    • 4.3 啟動(dòng)和連接 (校驗(yàn)方式)


提示:以下是本篇文章正文內(nèi)容,MongoDB 系列學(xué)習(xí)將會(huì)持續(xù)更新

在這里插入圖片描述

一、數(shù)據(jù)庫(kù)操作

①查看數(shù)據(jù)庫(kù)

show dbs
show databases

②查看當(dāng)前正在使用的數(shù)據(jù)庫(kù) (默認(rèn)的數(shù)據(jù)庫(kù)為 test,如果你沒(méi)有選擇數(shù)據(jù)庫(kù),集合將存放在 test 數(shù)據(jù)庫(kù)中)

db

③選擇或創(chuàng)建數(shù)據(jù)庫(kù) (新建的數(shù)據(jù)庫(kù)會(huì)暫時(shí)存放到內(nèi)存中,所以無(wú)法用show查看,只有插入內(nèi)容會(huì)才會(huì)持久化到磁盤(pán)中)

use 數(shù)據(jù)庫(kù)名稱(chēng)

④刪除數(shù)據(jù)庫(kù)

db.dropDatabase()

⑤默認(rèn)存在的數(shù)據(jù)庫(kù)

  • admin:從權(quán)限的角度來(lái)看,這是 “root” 數(shù)據(jù)庫(kù)。要是將一個(gè)用戶添加到這個(gè)數(shù)據(jù)庫(kù),這個(gè)用戶自動(dòng)繼承所有數(shù)據(jù)庫(kù)的權(quán)限。一些特定的服務(wù)器端命令也只能從這個(gè)數(shù)據(jù)庫(kù)運(yùn)行,比如列出所有的數(shù)據(jù)庫(kù)或者關(guān)閉服務(wù)器。
  • local:這里的數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可以用來(lái)存儲(chǔ)限于本地單臺(tái)服務(wù)器的任意集合。
  • config:當(dāng) Mongo 用于分片設(shè)置時(shí),config 數(shù)據(jù)庫(kù)在內(nèi)部使用,用于保存分片的相關(guān)信息。

二、集合操作

①查看集合

show collections
show tables

②顯式創(chuàng)建集合

db.createCollection(集合名)
db.createCollection("books")
# 設(shè)置參數(shù)
db.createCollection(name, options)

固定集合 options 參數(shù):

字段類(lèi)型描述
capped布爾(可選)如果為 true,則創(chuàng)建固定集合。固定集合是指有著固定大小的集合,當(dāng)達(dá)到最大值時(shí),它會(huì)自動(dòng)覆蓋最早的文檔。
size數(shù)值(可選)為固定集合指定一個(gè)最大值(以字節(jié)計(jì))。如果 capped 為 true,也需要指定該字段。
max數(shù)值(可選)指定固定集合中包含文檔的最大數(shù)量。

③刪除集合:結(jié)果會(huì)返回 true 或 false

db.collection.drop()
db.books.drop()

④查看集合詳情

db.collection.stats()

回到目錄…

三、文檔操作

文檔(document)的數(shù)據(jù)結(jié)構(gòu)和 JSON 基本一樣,所有存儲(chǔ)在集合中的數(shù)據(jù)都是 BSON 格式。

3.1 插入文檔

  • insert:若插入的數(shù)據(jù)主鍵已經(jīng)存在,則會(huì)拋 DuplicateKeyException 異常,提示主鍵重復(fù),不保存當(dāng)前數(shù)據(jù)。支持單行和多行插入
  • save:如果 _id 主鍵存在則更新數(shù)據(jù),如果不存在就插入數(shù)據(jù)。支持單行和多行插入
  • db.collection.insertOne():版本3.2新增,支持 writeConcern。僅支持單行插入
  • db.collection.insertMany():版本3.2新增,支持 writeConcern。支持多行插入

writeConcern 決定一個(gè)寫(xiě)操作落到多少個(gè)節(jié)點(diǎn)上才算成功。它的取值包括:

  • 0:發(fā)起寫(xiě)操作,不關(guān)心是否成功。
  • 1:默認(rèn)的寫(xiě)入策略。集群最大數(shù)據(jù)節(jié)點(diǎn)數(shù),寫(xiě)操作需要被復(fù)制到指定節(jié)點(diǎn)數(shù)才算成功。
  • majority:寫(xiě)操作需要被復(fù)制到大多數(shù)節(jié)點(diǎn)上才算成功。

①新增單個(gè)文檔

db.collection.insertOne(<document>,{writeConcern: <document>}
)
db.user.insertOne({name:"zhangsan",password:"123",age:18})

在這里插入圖片描述

②批量新增文檔: ordered 指定是否按順序?qū)懭?#xff0c;默認(rèn) true,按順序?qū)懭搿?/font>

db.collection.insertMany([ <document 1> , <document 2>, ... ],{writeConcern: <document>,ordered: <boolean>}
)
db.user.insertMany([{name:"lisi",password:"456",age:19},{name:"wangwu",password:"789",age:20},{name:"zhaoliu",password:"258",age:21}])

在這里插入圖片描述

③執(zhí)行腳本插入

編輯腳本 book.js

var tags = ["nosql","mongodb","document","developer","popular"];
var types = ["technology","sociality","travel","novel","literature"];
var books=[];
for(var i=0;i<50;i++){var typeIdx = Math.floor(Math.random()*types.length);var tagIdx = Math.floor(Math.random()*tags.length);var favCount = Math.floor(Math.random()*100);var book = {title: "book-"+i,type: types[typeIdx],tag: tags[tagIdx],favCount: favCount,author: "xxx"+i};books.push(book)
}
db.book.insertMany(books);

進(jìn)入 MongoShell 中執(zhí)行:pwd() 查看當(dāng)前路徑

load("../js/books.js")

回到目錄…

3.2 查詢文檔

db.collection.find(query, projection)
db.collection.findOne(query, projection)
  • query:可選,使用查詢操作符指定查詢條件。
  • projection:可選,使用投影操作符指定返回的鍵。投影時(shí),id為1的時(shí)候,其他字段必須是1;id是0的時(shí)候,其他字段可以是0;如果沒(méi)有_id字段約束,多個(gè)其他字段必須同為0或同為1。

①指定文檔查詢

# 全列查詢
db.book.find()// 指定列查詢,(0表示不查、1表示查詢), 默認(rèn)_id:1
db.book.find({},{title:1,author:1})
// 僅查詢 title 和 author 字段
db.book.find({},{_id:0,title:1,author:1})

在這里插入圖片描述

②條件查詢

// 查詢標(biāo)題為“book-2”的文檔
db.book.find({title:"book-2"})// 查詢分類(lèi)為“travel” 且 收藏?cái)?shù)超過(guò)60個(gè)的book文檔
db.book.find({type:"travel",favCount:{$gt:60}})// 查詢type為“travel” 或 tag為"nosql"的book文檔
db.book.find({$or:[{type:"travel"},{tag:"nosql"}]})

示例:
在這里插入圖片描述

邏輯運(yùn)算符對(duì)照表:

邏輯運(yùn)算符SQLMQL
a = 1{a: 1}
$lta < 1{a: {$lt: 1}}
$ltea <= 1{a: {$lte: 1}}
$gta > 1{a: {$gt: 1}}
$gtea >= 1{a: {$gte: 1}}
$nea != 1{a: {$ne: 1}}
$anda = 1 and b = 1{a: 1, b: 1} 或 {$and: [{a: 1}, {b: 1}]}
$ina in (1, 2, 3){a: {$in: [1, 2, 3]}}
$nina not in (1, 2, 3){a: {$nin: [1, 2, 3]}}
$ora = 1 or b = 1{$or: [{a: 1}, {b: 1}]}
$regexc 包含字符串 “abc”{c: {$regex: “abc”}}

③排序 & 分頁(yè)

指定排序:使用 sort() 方法對(duì)數(shù)據(jù)進(jìn)行排序。

// 指定按收藏?cái)?shù)(favCount)降序返回
db.book.find().sort({favCount:-1})

分頁(yè)查詢:skip 用于指定跳過(guò)記錄數(shù),limit 則用于返回結(jié)果數(shù)量。

// 分頁(yè)設(shè)計(jì): 每頁(yè)大小為8條的book文檔
// 第一頁(yè)
db.book.find().skip(0).limit(8)
// 第二頁(yè)
db.book.find().skip(8).limit(8)
// 第三頁(yè)
db.book.find().skip(16).limit(8)

④正則表達(dá)式匹配查詢

// 查找type包含“so”字符串的book文檔
db.book.find({type:{$regex:"so"}})
// 使用正則表達(dá)式
db.book.find({type:/so/})

回到目錄…

3.3 更新文檔

db.collection.update(query,update,options)
  • query:描述更新的查詢條件。
  • update:描述更新的動(dòng)作及新的內(nèi)容。
  • options:描述更新的選項(xiàng)。
    • upsert: 可選,如果不存在 update 的記錄,是否插入新的記錄。默認(rèn) false,不插入。
    • multi: 可選,是否按條件查詢出的多條記錄全部更新。 默認(rèn) false,只更新找到的第一條記錄。
    • writeConcern :可選,決定一個(gè)寫(xiě)操作落到多少個(gè)節(jié)點(diǎn)上才算成功。
操作符格式描述
$set{$set:{field:value}}指定一個(gè)鍵并更新值,若鍵不存在則創(chuàng)建
$unset{$unset : {field : 1 }}刪除一個(gè)鍵
$inc{$inc : {field : value } }對(duì)數(shù)值類(lèi)型進(jìn)行增減
$rename{$rename : {old_field_name : new_field_name } }修改字段名稱(chēng)
$push{ $push : {field : value } }將數(shù)值追加到數(shù)組中,若數(shù)組不存在則會(huì)進(jìn)行初始化
$pushAll{$pushAll : {field : value_array }}追加多個(gè)值到一個(gè)數(shù)組字段內(nèi)
$pull{$pull : {field : _value } }從數(shù)組中刪除指定的元素
$addToSet{$addToSet : {field : value } }添加元素到數(shù)組中,具有排重功能
$pop{$pop : {field : 1 }}刪除數(shù)組的第一個(gè)或最后一個(gè)元素

①更新單個(gè)文檔

// 將book-0書(shū)籍的數(shù)量增加一本
db.book.update({title:"book-0"},{$inc:{favCount:1}})

在這里插入圖片描述

②更新多個(gè)文檔

// 將分類(lèi)為“novel”的文檔的增加發(fā)布時(shí)間(publishedDate)
db.book.update({type:"novel"},{$set:{publisherDate:new Date()}},{multi:true})

在這里插入圖片描述

update 命令的選項(xiàng)配置較多,為了簡(jiǎn)化使用還可以使用一些快捷命令:

  • updateOne:更新單個(gè)文檔。
  • updateMany:更新多個(gè)文檔。
  • replaceOne:替換單個(gè)文檔。

③使用 upsert 命令: 如果目標(biāo)文檔不存在,則執(zhí)行插入命令。

db.book.update({title:"myBook"},{$set:{tags:["nosql","mongodb"],type:"none",author:"fox"}},{upsert:true})

nMatched、nModified 都為0,表示沒(méi)有文檔被匹配及更新,nUpserted=1提示執(zhí)行了upsert動(dòng)作。
在這里插入圖片描述

④實(shí)現(xiàn) replace 語(yǔ)義: 如果更新描述中不包含任何操作符,就會(huì)實(shí)現(xiàn) replace 替換。

db.book.update({title:"myBook"},{mytitle:"newBook"})

在這里插入圖片描述

⑤findAndModify 命令

findAndModify 兼容了查詢和修改指定文檔的功能,findAndModify 只能更新單個(gè)文檔。

// 將某個(gè)book文檔的收藏?cái)?shù)(favCount)加1
db.book.findAndModify({query:{title:"book-0"},update:{$inc:{favCount:1}}
})

該操作會(huì)返回修改前的 “舊” 數(shù)據(jù),并完成對(duì)文檔的修改。
在這里插入圖片描述

// 可以指定 new 選項(xiàng),返回修改后的 “新” 數(shù)據(jù)。
db.book.findAndModify({query:{title:"book-0"},update:{$inc:{favCount:1}},new:true
})

在這里插入圖片描述

與 findAndModify 語(yǔ)義相近的命令如下:

  • findOneAndUpdate:更新單個(gè)文檔并返回更新前(或更新后)的文檔。
  • findOneAndReplace:替換單個(gè)文檔并返回替換前(或替換后)的文檔。

回到目錄…

3.4 刪除文檔

①使用 remove 刪除

  • remove 命令需要配合查詢條件使用;
  • 匹配查詢條件的文檔會(huì)被刪除;
  • 指定一個(gè)空文檔條件會(huì)刪除所有文檔;
db.book.remove({title:"book-5"}) //刪除某個(gè)標(biāo)題的書(shū)籍
db.book.remove({favCount:{$lt:30}}) //刪除數(shù)量少于30的書(shū)籍
db.book.remove({}) //刪除所有記錄
db.book.remove() //報(bào)錯(cuò)

remove 命令會(huì)刪除匹配條件的全部文檔,如果希望明確限定只刪除一個(gè)文檔,則需要指定 justOne 參數(shù),命令格式如下:

db.collection.remove(query,justOne)
// 示例: 刪除滿足type:novel條件的首條記錄
db.book.remove({type:"novel"},true)

②使用 delete 刪除 (官方推薦)

db.book.deleteMany({}) //刪除集合下全部文檔
db.book.deleteMany({type:"novel"}) //刪除 type等于 novel 的全部文檔
db.book.deleteOne({type:"travel"}) //刪除 type等于 travel 的一個(gè)文檔

③返回被刪除文檔

如果希望獲得被刪除的文檔,可以使用 findOneAndDelete,但只能刪除并返回第一條結(jié)果:

db.books.findOneAndDelete({type:"novel"})

除了在結(jié)果中返回刪除文檔,還允許定義“刪除的順序”,即按照指定順序刪除找到的第一個(gè)文檔:

db.books.findOneAndDelete({type:"novel"},{sort:{favCount:1}})

回到目錄…

四、安全認(rèn)證

4.1 創(chuàng)建管理員賬號(hào)

# 設(shè)置管理員用戶名密碼需要切換到admin庫(kù)
use admin
# 創(chuàng)建管理員
db.createUser({user:"root",pwd:"123456",roles:["root"]})
# 查看所有用戶信息
show users
# 刪除用戶
db.dropUser("root")

在這里插入圖片描述

4.2 創(chuàng)建應(yīng)用數(shù)據(jù)庫(kù)用戶

use library
db.createUser({user:"wsy",pwd:"123456",roles:["dbOwner"]})

在這里插入圖片描述

常用角色權(quán)限:

權(quán)限名描述
read允許用戶讀取指定數(shù)據(jù)庫(kù)
readWrite允許用戶讀寫(xiě)指定數(shù)據(jù)庫(kù)
dbAdmin允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問(wèn)system.profile
dbOwner允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行任意操作,增、刪、改、查等
userAdmin允許用戶向system.users集合寫(xiě)入,可以在指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶
clusterAdmin只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限
readAnyDatabase只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限
readWriteAnyDatabase只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫(xiě)權(quán)限
userAdminAnyDatabase只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
dbAdminAnyDatabase只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限
root只在admin數(shù)據(jù)庫(kù)中可用。超級(jí)賬號(hào),超級(jí)權(quán)限

4.3 啟動(dòng)和連接 (校驗(yàn)方式)

①默認(rèn)情況下,MongoDB 不會(huì)啟用鑒權(quán),以鑒權(quán)模式啟動(dòng) MongoDB

mongod -f ../conf/mongod.conf --auth

②啟用鑒權(quán)之后,連接 MongoDB 的相關(guān)操作都需要提供身份認(rèn)證

mongo -u用戶名 -p密碼 --authenticationDatabase=用戶所在庫(kù)
mongo -uroot -p123456 --authenticationDatabase=admin
mongo -uwsy -p123456 --authenticationDatabase=library

管理員可以看到并操作所有數(shù)據(jù)庫(kù):
在這里插入圖片描述

普通用戶只能看到并操作對(duì)應(yīng)的數(shù)據(jù)庫(kù):
在這里插入圖片描述

回到目錄…


總結(jié):
提示:這里對(duì)文章進(jìn)行總結(jié):
本文是對(duì)MongoDB的學(xué)習(xí),學(xué)習(xí)了針對(duì)數(shù)據(jù)庫(kù)、集合、文檔的增刪查改操作,并且學(xué)習(xí)創(chuàng)建用戶及權(quán)限、以安全認(rèn)證的方式啟動(dòng)MongoDB。之后的學(xué)習(xí)內(nèi)容將持續(xù)更新!!!

http://www.risenshineclean.com/news/31393.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)包括啥千鋒教育培訓(xùn)機(jī)構(gòu)地址
  • web程序設(shè)計(jì)網(wǎng)站開(kāi)發(fā)工具百度云怎么找資源
  • 莘縣網(wǎng)站建設(shè)最有效的線上推廣方式
  • 設(shè)計(jì)公司logo設(shè)計(jì)大全北京做seo的公司
  • 煙臺(tái)網(wǎng)站建設(shè)力推企匯互聯(lián)見(jiàn)效付款網(wǎng)站維護(hù)的內(nèi)容有哪些
  • 做水果的有什么網(wǎng)站桂林seo顧問(wèn)
  • 個(gè)人網(wǎng)站建立多少錢(qián)陜西seo主管
  • html頁(yè)面模板關(guān)鍵詞優(yōu)化搜索引擎
  • 網(wǎng)站首頁(yè) 模板鄭州seo排名優(yōu)化
  • 公司免費(fèi)網(wǎng)站制作產(chǎn)品推銷(xiāo)
  • 網(wǎng)站維護(hù)工作是做啥web網(wǎng)頁(yè)制作成品
  • 衡水做淘寶網(wǎng)站整合營(yíng)銷(xiāo)網(wǎng)絡(luò)推廣
  • 臨沂網(wǎng)站seo互聯(lián)網(wǎng)營(yíng)銷(xiāo)師考試題庫(kù)
  • 重慶高端網(wǎng)站建設(shè)江蘇搜索引擎優(yōu)化
  • 商丘網(wǎng)站建設(shè)專(zhuān)業(yè)現(xiàn)狀營(yíng)銷(xiāo)策劃與運(yùn)營(yíng)方案
  • 濰坊網(wǎng)站開(kāi)發(fā)公司秒收錄關(guān)鍵詞代發(fā)
  • 利用帝國(guó)軟件如何做網(wǎng)站qq空間秒贊秒評(píng)網(wǎng)站推廣
  • 網(wǎng)站發(fā)產(chǎn)品ps怎么做產(chǎn)品圖友情貼吧
  • 百度網(wǎng)站沒(méi)收錄百度賬戶安全中心
  • 有專(zhuān)門(mén)教做蛋糕的網(wǎng)站重慶網(wǎng)站推廣軟件
  • 物流網(wǎng)站建設(shè)哪個(gè)好智慧軟文發(fā)稿平臺(tái)官網(wǎng)
  • 網(wǎng)站一般在哪建設(shè)網(wǎng)絡(luò)推廣人員
  • app界面設(shè)計(jì)流程圖河北搜索引擎優(yōu)化
  • 深圳做網(wǎng)站好的公司外貿(mào)推廣優(yōu)化公司
  • qq怎么做網(wǎng)站客服企業(yè)推廣策略
  • 對(duì)政府網(wǎng)站一體化服務(wù)建設(shè)的需求百度投放廣告一天多少錢(qián)
  • 烏魯木齊可以做網(wǎng)站的公司有哪些重慶網(wǎng)站seo教程
  • 網(wǎng)站開(kāi)發(fā)語(yǔ)言是什么app開(kāi)發(fā)多少錢(qián)
  • 西安企業(yè)網(wǎng)站建設(shè)哪家好怎么用手機(jī)創(chuàng)建網(wǎng)站
  • 什么網(wǎng)站ppt做的好免費(fèi)的seo優(yōu)化工具