国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

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

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

文章目錄

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


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

在這里插入圖片描述

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

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

show dbs
show databases

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

db

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

use 數(shù)據(jù)庫名稱

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

db.dropDatabase()

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

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

二、集合操作

①查看集合

show collections
show tables

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

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

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

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

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

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

④查看集合詳情

db.collection.stats()

回到目錄…

三、文檔操作

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

3.1 插入文檔

  • insert:若插入的數(shù)據(jù)主鍵已經(jīng)存在,則會拋 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 決定一個寫操作落到多少個節(jié)點(diǎn)上才算成功。它的取值包括:

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

①新增單個文檔

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:可選,使用投影操作符指定返回的鍵。投影時,id為1的時候,其他字段必須是1;id是0的時候,其他字段可以是0;如果沒有_id字段約束,多個其他字段必須同為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"})// 查詢分類為“travel” 且 收藏數(shù)超過60個的book文檔
db.book.find({type:"travel",favCount:{$gt:60}})// 查詢type為“travel” 或 tag為"nosql"的book文檔
db.book.find({$or:[{type:"travel"},{tag:"nosql"}]})

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

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

邏輯運(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”}}

③排序 & 分頁

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

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

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

// 分頁設(shè)計: 每頁大小為8條的book文檔
// 第一頁
db.book.find().skip(0).limit(8)
// 第二頁
db.book.find().skip(8).limit(8)
// 第三頁
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:描述更新的動作及新的內(nèi)容。
  • options:描述更新的選項。
    • upsert: 可選,如果不存在 update 的記錄,是否插入新的記錄。默認(rèn) false,不插入。
    • multi: 可選,是否按條件查詢出的多條記錄全部更新。 默認(rèn) false,只更新找到的第一條記錄。
    • writeConcern :可選,決定一個寫操作落到多少個節(jié)點(diǎn)上才算成功。
操作符格式描述
$set{$set:{field:value}}指定一個鍵并更新值,若鍵不存在則創(chuàng)建
$unset{$unset : {field : 1 }}刪除一個鍵
$inc{$inc : {field : value } }對數(shù)值類型進(jìn)行增減
$rename{$rename : {old_field_name : new_field_name } }修改字段名稱
$push{ $push : {field : value } }將數(shù)值追加到數(shù)組中,若數(shù)組不存在則會進(jìn)行初始化
$pushAll{$pushAll : {field : value_array }}追加多個值到一個數(shù)組字段內(nèi)
$pull{$pull : {field : _value } }從數(shù)組中刪除指定的元素
$addToSet{$addToSet : {field : value } }添加元素到數(shù)組中,具有排重功能
$pop{$pop : {field : 1 }}刪除數(shù)組的第一個或最后一個元素

①更新單個文檔

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

在這里插入圖片描述

②更新多個文檔

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

在這里插入圖片描述

update 命令的選項配置較多,為了簡化使用還可以使用一些快捷命令:

  • updateOne:更新單個文檔。
  • updateMany:更新多個文檔。
  • replaceOne:替換單個文檔。

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

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

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

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

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

在這里插入圖片描述

⑤findAndModify 命令

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

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

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

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

在這里插入圖片描述

與 findAndModify 語義相近的命令如下:

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

回到目錄…

3.4 刪除文檔

①使用 remove 刪除

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

remove 命令會刪除匹配條件的全部文檔,如果希望明確限定只刪除一個文檔,則需要指定 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 的一個文檔

③返回被刪除文檔

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

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

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

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

回到目錄…

四、安全認(rèn)證

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

# 設(shè)置管理員用戶名密碼需要切換到admin庫
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ù)庫用戶

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

在這里插入圖片描述

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

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

4.3 啟動和連接 (校驗方式)

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

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

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

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

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

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

回到目錄…


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

http://m.aloenet.com.cn/news/31393.html

相關(guān)文章:

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