真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)據(jù)庫(kù)MongoDB的文檔操作是怎樣的

數(shù)據(jù)庫(kù)MongoDB的文檔操作是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)建站技術(shù)團(tuán)隊(duì)10多年來(lái)致力于為客戶提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、高端網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了近千家網(wǎng)站,包括各類中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

MongoDB的文檔操作

在MongoDB中文檔是指多個(gè)鍵及其關(guān)聯(lián)的值有序地放置在一起就是文檔,其實(shí)指的就是數(shù)據(jù),也是我們平時(shí)操作最多的部分。

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

BSON 是一種類似 JSON 的二進(jìn)制形式的存儲(chǔ)格式,是 Binary JSON 的簡(jiǎn)稱。

插入文檔

插入單個(gè)文檔

注意:

  1. 新增時(shí)不需要考慮field,如果field已經(jīng)存在則向指定field中新增。如果field不存在,則在collection中新添加一個(gè)filed

  2. 向collection中新增數(shù)據(jù)時(shí),如果collection不存在,則自動(dòng)創(chuàng)建collection

向dev集合中插入單個(gè)文檔。

可以使用insert/insertOne/save執(zhí)行新增,語(yǔ)法完全相同,下面是三種寫法等效:

db.c1.insert({name:"張三"});

db.c1.save({name:"張三"});

db.c1.insertOne({name:"張三"});

區(qū)別:

當(dāng)明確給定主鍵時(shí),如果主鍵值已經(jīng)存在save表示修改,insert/insertOne會(huì)報(bào)主鍵重復(fù)。

注意:(save修改必須在MongoDB的客戶端操作,不能使用第三方客戶端,否則無(wú)法執(zhí)行成功)

命令中_id是ObjectId類型,需要通過(guò)ObjectId函數(shù)把字符串轉(zhuǎn)換為ObjectId

db.c1.save({_id:ObjectId("5e81b3ac4d4d000026004f6a"),name:"jqk"})

插入多個(gè)文檔

可以使用insert/insertMany/save執(zhí)行新增,區(qū)別于單條新增把新增函數(shù)參數(shù)由對(duì)象類型({})變成數(shù)組類型([{}])下面是三種寫法等效:

db.c1.insert([{name:"a"},{name:"b"}]);

db.c1.insertMany([{name:"a"},{name:"b"}]);

db.c1.save([{name:"a"},{name:"b"}]);

更新文檔

MongoDB通過(guò)update函數(shù)或者save函數(shù)來(lái)更新集合中的文檔。

update函數(shù)

update() 函數(shù)用于更新已存在的文檔。

語(yǔ)法格式:db.COLLECTION_NAME.update({查詢條件},{更新內(nèi)容},{更新參數(shù)(可選)})

其中更新內(nèi)容為整個(gè)文檔更新內(nèi)容,如果更新內(nèi)容中只有一個(gè)屬性,除了_id以外其他屬性將會(huì)被設(shè)置null。

先新增一條測(cè)試數(shù)據(jù)

db.c1.insert({name:"張三",age:12,address:"地址"});

修改,name改成了李四,age和address都被設(shè)置null了。(mongodb中如果一個(gè)集合中某個(gè)屬性所有的文檔對(duì)象都為空時(shí)會(huì)刪除這個(gè)屬性)

db.c1.update({name:"張三"},{name:"李四"});

更新操作符

$set操作符(需要記憶)

$set操作符:用來(lái)指定一個(gè)鍵并更新鍵值,若鍵不存在并創(chuàng)建。只能修改第一個(gè)document

語(yǔ)法格式:db.COLLECTION_NAME.update({查詢條件},{更新操作符:{更新內(nèi)容}})

$set的作用總結(jié):

  1. 只修改特定的Field,解決update默認(rèn)修改整個(gè)document情況

db.c1.update({name:"張三"},{$set:{name:"王五"}});
  1. 默認(rèn)只修改符合條件的第一個(gè)document,如果需要全部修改,添加更新參數(shù)multi:true

db.c1.update({name:"張三"},{$set:{age:18}},{multi:true});
  1. 如果Field不存在,可以新建一個(gè)Field

db.c1.update({name:"張三"},{$set:{sex:"男"}})
$inc操作符

$inc操作符:可以對(duì)文檔的某個(gè)值為數(shù)字型(只能為滿足要求的數(shù)字)的鍵進(jìn)行增減的操作。如果給定正數(shù)表示新增,如果給定負(fù)數(shù)表示減少。

把王五的年齡減少5歲。

db.c1.update({name:"王五"},{$inc:{age:-5}});
$unset操作符

$unset操作符:主要是用來(lái)刪除鍵。讓鍵的值為空。在編寫命令時(shí)$unset里field取值任意,無(wú)論給定什么值都表示刪除。

刪除名稱為王五的地址。

db.c1.update({name:"王五"},{$unset:{address:"隨意"}});
$push操作符

$push操作符:向文檔的某個(gè)數(shù)組類型的鍵添加一個(gè)數(shù)組元素,不過(guò)濾重復(fù)的數(shù)據(jù)。添加時(shí)鍵存在,要求鍵值類型必須是數(shù)組;鍵不存在,則創(chuàng)建數(shù)組類型的鍵。

向集合c1中所有文檔對(duì)象添加了數(shù)組類型屬性hobby,并添加一個(gè)值寫代碼。如果再次執(zhí)行,表示向hobby中再添加一個(gè)值寫代碼。默認(rèn)只修改符合條件的第一條,如果需要全部修改,添加multi屬性。

db.c1.update({},{$push:{hobby:"寫代碼"}},{multi:true});
$pop操作符

$pop操作符:刪除數(shù)據(jù)元素??扇≈抵荒苁?或-1。1表示尾部刪除,-1表示頭部刪除

刪除hobby中第一個(gè)元素。其中$pop中key是要操作的數(shù)組類型屬性。

db.c1.update({name:"李四"},{$pop:{hobby:-1}})
$pull操作符

$pull操作符:從數(shù)組中刪除滿足條件的元素,只要滿足條件都刪除。

刪除hobby中元素內(nèi)容為看尚學(xué)堂視頻,如果存在多個(gè)都刪除。

db.c1.update({name:“王五”},{$pull:{hobby:“看尚學(xué)堂視頻”}});

$pullAll操作符

$pullAll操作符:可以設(shè)置多個(gè)條件。

刪除王五中hobby為寫代碼和看尚學(xué)堂視頻的值。其中屬性(hobby)取值一定要是數(shù)組類型。

db.c1.update({name:"王五"},{$pullAll:{hobby:["寫代碼","看尚學(xué)堂的視頻"]}});

$rename

$rename操作符:對(duì)鍵進(jìn)行重新命名。任何類型的鍵都能重命名。

修改王五的name屬性為username。

db.c1.update({name:"王五"},{$rename:{name:"username"}});

查詢文檔

find()函數(shù)

在MongoDB中可以使用find()函數(shù)查詢文檔。

語(yǔ)法格式為:find({查詢條件(可選)},{指定投影的鍵(可選)})

如果未給定參數(shù)則表示查詢所有數(shù)據(jù)。

db.c1.find();

查詢所有name為張三的文檔對(duì)象

db.c1.find({name:"張三"})

投影操作

投影查詢指的就是哪些列被顯示或不被顯示。寫到投影(projection)里面的屬性可取值為1(顯示)或0(不顯示)。除了_id以外其他屬性取值必須是相同。

sex和hobby不顯示,其他屬性都顯示

db.c1.find({name:"張三"},{sex:0,hobby:0})

顯示sex和hobby,默認(rèn)_id也是顯示

db.c1.find({name:"張三"},{sex:1,hobby:1})

只顯示sex和hobby。只有這種情況才能出現(xiàn)屬性取值不一樣

db.c1.find({name:"張三"},{_id:0,sex:1,hobby:1})

findOne()函數(shù)

findOne()函數(shù)只返回滿足條件的第一條數(shù)據(jù)。

返回第一行document對(duì)象。

db.c1.findOne();

返回名字為張三的第一條數(shù)據(jù)

db.c1.findOne({name:"張三"})

正則查詢

MongoDB中查詢條件也可以使用正則表達(dá)式作為匹配約束。正則表達(dá)式語(yǔ)法與JavaScript正則表達(dá)式語(yǔ)句完全相同。正則內(nèi)容需要寫在 / / 之前。

語(yǔ)法格式:db.COLLECTION_NAME.find({字段名:正則表達(dá)式});、

可以實(shí)現(xiàn)模糊查詢

查詢name中存在三的文檔對(duì)象

db.c1.find({name:/三/});

db.COLLECTION_NAME.find({字段名:{$regex:正則表達(dá)式,$options:正則選項(xiàng)}});

第二種方式比第一種方式多了正則選項(xiàng),功能更多。

正則表達(dá)式格式:/xxx/

正則選項(xiàng):

i - 不區(qū)分大小寫以匹配大小寫的情況。

m - 多行查找,如果內(nèi)容里面不存在換行符號(hào)(例如 \n)或者條件上沒(méi)有(start/end),該選項(xiàng)沒(méi)有任何效果

x - 設(shè)置x選項(xiàng)后,正則表達(dá)式中的非轉(zhuǎn)義的空白字符將被忽略。需要 r e g e x 與 regex與 regex與options語(yǔ)法

s - 允許點(diǎn)字符(即.)匹配包括換行符在內(nèi)的所有字符。需要 r e g e x 與 regex與 regex與options語(yǔ)法

i,m,x,s可以組合使用。

示例:

錄入數(shù)據(jù)

db.c1.insert({name:"abc"});

db.c1.insert({name:"bcd"});

db.c1.insert({name:"ABC"});

db.c1.insert({name:"BCD"});

只能查詢包含小寫b的文檔對(duì)象

db.c1.find({name:/b/})

查詢時(shí)不區(qū)分大小寫,只要包含b或B都能查詢出來(lái)

db.c1.find({name:{ r e g e x : / b / , regex:/b/, regex:/b/,options:“i”}});

條件操作符

條件操作符用于比較兩個(gè)表達(dá)式并從mongoDB集合中獲取數(shù)據(jù)。

語(yǔ)法格式:find({鍵:{操作符:條件}})或者findOne({鍵:{操作符:條件}})

$gt

(>) 大于操作符,greater than 縮寫。用right記憶,表示右側(cè)角括號(hào)。

查詢所有年齡大于10的文檔對(duì)象

db.c1.find({age:{$gt:10}});

$lt

(<) 小于操作符。less than縮寫,用left記憶,左角括號(hào)

查詢所有年齡小于10的文檔對(duì)象

db.c1.find({age:{$lt:10}});

$eq

(==)等于操作符,equals

查詢年齡等于8

db.c1.find({age:{$eq:8}});

等效于

db.c1.find({age:8});

$ne

(!=)不等操作符 not equals

查詢所有年齡不是18歲的,包含了age屬性沒(méi)有值的文檔對(duì)象。

db.c1.find({age:{$ne:8}});

$gte

(>=)大于或等于操作符greater than equals

查詢所有年齡大于等于8的文檔對(duì)象。如果文檔沒(méi)有age屬性無(wú)法被查詢。

db.c1.find({age:{$gte:8}});

$lte

(<=)小于或等于操作符less than equals

查詢小于等于8的文檔對(duì)象。

db.c1.find({age:{$lte:8}});

$in

我們可以使用 i n 操 作 符 來(lái) 表 示 多 條 件 查 詢 , in操作符來(lái)表示多條件查詢, in操作符來(lái)表示多條件查詢,in中多條件的關(guān)系為或者關(guān)系,只要滿足其中一個(gè)就能被查詢出來(lái),由于$in取值為多個(gè),所以是數(shù)組類型。

查詢年齡為8或10或12的文檔對(duì)象

db.c1.find({age:{$in:[8,10,12]}})

$nin

not in,與$in的結(jié)果取反。

只要age不是8或10或12的文檔對(duì)象都能查詢出來(lái)。

db.c1.find({age:{$nin:[8,10,12]}})

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


標(biāo)題名稱:數(shù)據(jù)庫(kù)MongoDB的文檔操作是怎樣的
文章源于:http://weahome.cn/article/ppiogj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部