欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Mongodb大數(shù)據(jù)語(yǔ)法大全

JSON和MongoDB

創(chuàng)新互聯(lián)是專(zhuān)業(yè)的天寧網(wǎng)站建設(shè)公司,天寧接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行天寧網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

JSON不止是一種交換數(shù)據(jù)的方式,也是一種存儲(chǔ)數(shù)據(jù)的良好方式,實(shí)際上MONGODB并未使用JSON存儲(chǔ)數(shù)據(jù),而是使用由MONGODB團(tuán)隊(duì)開(kāi)發(fā)的一種稱(chēng)為BSON的開(kāi)放數(shù)據(jù)格式。

面向文檔存儲(chǔ)BSON

BSON是一個(gè)開(kāi)放標(biāo)準(zhǔn),BSON存儲(chǔ)使用的空間比JSNO(CouchDB一個(gè)強(qiáng)大的面向文檔數(shù)據(jù)庫(kù))多在相同版本情況下。

BSON的優(yōu)勢(shì)在于

1、處理數(shù)據(jù)比JSON快,消耗一定的存儲(chǔ)空間,簡(jiǎn)單說(shuō)BSON更方便瀏覽,遍歷索引頁(yè)非常快。

2、使用BSON容易將它數(shù)據(jù)快速轉(zhuǎn)換為編程余元的原生數(shù)據(jù)格式

3、BSON也提供對(duì)JSON的一些擴(kuò)展,通過(guò)BSON可以存儲(chǔ)二進(jìn)制數(shù)據(jù),以及處理特定的數(shù)據(jù)類(lèi)型,因此,BSON可以存儲(chǔ)任何JSON文檔,但有效的BSON文檔可能不是有效的JSON

瀏覽數(shù)據(jù)庫(kù)

use testDB   //切換已有數(shù)據(jù)庫(kù)或者創(chuàng)建新的數(shù)據(jù)庫(kù)

查看可用的數(shù)據(jù)庫(kù)和集合

show dbs     //只會(huì)顯示出已經(jīng)存在的數(shù)據(jù)庫(kù)

show collections //顯示當(dāng)前數(shù)據(jù)庫(kù)中的所有集合

集合中插入數(shù)據(jù)

最常用的操作就是在集合中插入數(shù)據(jù),所有數(shù)據(jù)都以BSON格式存儲(chǔ),插入數(shù)據(jù)可以先定義數(shù)據(jù),然后使用insertOne函數(shù)將它們保存在集合中,或使用insert函數(shù)臨時(shí)輸入文檔內(nèi)容。

douctment=({"key1":"values"})

db.test.insertOne(douctment)

    插入數(shù)據(jù)時(shí),鍵名必須遵守如下規(guī)則:

    $字符不能是鍵名的第一個(gè)字符

    圓點(diǎn)[.]不能出現(xiàn)在鍵中

    名稱(chēng)_id被保留使用

    集合的名稱(chēng)不能超過(guò)128個(gè)字符

    空字符串("")不能用作集合名稱(chēng)

    集合名必須以字母或下劃線(xiàn)開(kāi)頭

    集合名SYSTEM被MONGDB保留,不能使用

    集合名不能包含null字符"\0"

全部數(shù)據(jù)查詢(xún)

db.testDB.find()     //結(jié)果顯示其中的所有文檔

獲取特定類(lèi)型的文檔

db.testDB.find({"key1":"values"})

獲取values相關(guān)的數(shù)據(jù)標(biāo)題,忽略其他

db.testDB.find({"key1":"values"},{"Tilte":1})

使用函數(shù)sort、limit和skip

db.testDB.find().sort({"Tilte":1}) //按鍵的結(jié)果進(jìn)行升序,若-1為降序

db.testDB.find().limit(10)     //取文檔前N個(gè)結(jié)果數(shù)目

db.testDB.find().skip(20)      //跳過(guò)文檔的前N個(gè)數(shù)據(jù)

 組合使用這些函數(shù)

 db.testDB.find().sort({"Tilte":1}).limit(10).skip(10)

 

在MONGODB中使用查詢(xún)時(shí),還需要注意一些額外的概念和特性,包括固定集合、自然順序和$natural

自然順序:是數(shù)據(jù)庫(kù)中結(jié)合的原生排序方法,所以如果在查詢(xún)集合中的文檔時(shí),如果沒(méi)有顯示指定排序順序,結(jié)果將默認(rèn)按照前向自然順序返回。

固定集合:是數(shù)據(jù)庫(kù)的一種集合,它的自然順序保證與文檔插入的順序一致,保證自然順序一直與文檔插入順序一致,另一優(yōu)點(diǎn)是集合的大小固定,最老的數(shù)據(jù)將被刪除,最新的數(shù)據(jù)將被添加到末端,保證自然順序與文檔插入的順序一致

固定集合必須使用createCollection函數(shù),如創(chuàng)建名為auth的固定集合

 db.createCollection("auth":{capped:true,size:20480})

可以使用max限制固定集合中的文檔數(shù)量

 db.createCollection("auth":{capped:true,size:20480,max:100})

$natural:鑒于固定集合保證了自然順序與插入順序一致,查詢(xún)時(shí)不需要再使用任何特殊的參數(shù)、任何其他特殊的命令或函數(shù),如查找最近的10條數(shù)據(jù)

db.testDB.find().sort({$natural:-1}).limit(10)

查看集合的大小

db.testDB.stats()

獲取單個(gè)文檔

db.testDB.findOne()

使用聚集命名

count()函數(shù)返回文檔的數(shù)目

db.testDB.count()   //指定集合中的文檔數(shù)目

執(zhí)行額外的過(guò)濾統(tǒng)計(jì)

db.testDB.find({"key1":"values"},{"Tilte":1}).count()  //count()函數(shù)默認(rèn)將忽略skip()或limit()參數(shù),若不想被忽略需要使用count(true)

db.testDB.find({"key1":"values"},{"Tilte":1}).limit(10).count(true)

使用distinct函數(shù)獲取唯一值

db.testDB.distinct({"Tilte"})

將結(jié)果分組group()

    該命令目的是返回一個(gè)已分組元素的數(shù)組,函數(shù)group()接受3個(gè)參數(shù):key,initial和reduce,但在分片環(huán)境中無(wú)法正常工作

    參數(shù)key指定希望使用哪個(gè)鍵對(duì)結(jié)果進(jìn)行分組。

    參數(shù)initial允許為每個(gè)已分組的結(jié)果提供基數(shù)(元素開(kāi)始開(kāi)始統(tǒng)計(jì)的起始基數(shù)),如果希望返回指定的數(shù)字,參數(shù)默認(rèn)為0

    參數(shù)reduce把所有類(lèi)似的條目分組在一起,它接受2個(gè)參數(shù):items和pre

    db.testDB.group(

    key:{"Tilte":true},

    initial:{Total:0},

    reduct:function(items,pre){

    prev.Total+=1

    }

    )

使用條件操作符

    $gt大于參數(shù)  

    db.testDB.find({"key1":{$gt:2000}})

    $gte大于或等于 $lt小于 $lte小于等于  $ne 不等于

    指定一個(gè)匹配的數(shù)組

    db.testDB.find({"key1":{$in:[1,2,3,4]}})   //類(lèi)似的又$nin

    匹配文檔所有屬性$all

    db.testDB.find({"key1":{$all:[1,2,3,4]}})

    在文檔中搜索多個(gè)表達(dá)

    db.testDB.find({$or:[{"key1":"values1"},{"key2":"values2"}]})  //$nor

    使用$slice獲取文檔

    db.testDB.find({"key1":"values1"},{"Cast":{$slice:3}})  //獲取前3項(xiàng),負(fù)數(shù)為后N個(gè)

    類(lèi)似LIMT  n,m

    搜索奇數(shù)和偶數(shù)$MOD

    db.testDB.find({"key1":"values1"},{"Cast":{$mod:[2,0]}})

    使用$size過(guò)濾結(jié)果:過(guò)濾出文檔中數(shù)組大小

    db.testDB.find({"key1":{$size:2}})

    返回含有特定字段的對(duì)象:$EXISTS (全表掃描,不能使用索引)

    db.testDB.find({"key1":{$exists:true}})

    基于bson類(lèi)型匹配結(jié)果:$type可以基于BSON類(lèi)型匹配結(jié)果:

    db.testDB.find({"key1":{$type:3}}) 

    匹配完整的數(shù)組  $elemMatch操作符

    

    使用正則表達(dá)式

    db.testDB.find({"key1":/^Sharesoe*/i})

    

更新數(shù)據(jù)

    使用update()更新操作,該函數(shù)接受3個(gè)主要參數(shù):criteria、objNew和options

    參數(shù)criteria可用于指定一個(gè)查詢(xún)

    參數(shù)objNew指定更新信息

    參數(shù)options用于指定更新文檔時(shí)的選項(xiàng),有upsert和multi,upsert有更新的就更新無(wú)更新就就創(chuàng)建,multi可以指定是否應(yīng)該更新所有匹配的文檔或只更新第一個(gè)文檔

    db.testDB.updateOne({"key1":"values"},{"Tilte":1},{upsert:true})  //可以使用save()命令實(shí)現(xiàn)upsert

    db.testDB.save({"key1":"values"},{"Tilte":1}) 

    ##此更新會(huì)導(dǎo)致多余的key-value被刪除

    使用$inc增加值

    db.testDB.updateOne({"key1":"values"},{$inc:{"Tilte":5}})

    更新指定的值

    db.testDB.updateOne({"key1":"values"},{$set:{"Tilte":"sharesoe.com"}) 

    刪除指定字段

    db.testDB.updateOne({"key1":"values"},{$unset:{"Tilte":1}) 

    在指定字段中添加某個(gè)值$push,或多個(gè)值用$each

    db.testDB.updateOne({"key1":"values"},{$push:{"Tilte2":"haha"}})

    db.testDB.updateOne({"key1":"values"},{$push:{"Tilte2":{$each:["haha",1,2,3]}}})

    數(shù)組中添加數(shù)據(jù)

    db.testDB.updateOne({"key1":"values"},{$addToSet:{"Tilte2":{$each:["haha",1,2,3]}}})

    數(shù)組中刪除元素

    db.testDB.updateOne({"key1":"values"},{$pop:{"Tilte2":1}})  //正數(shù)是最后一個(gè)元素

    刪除數(shù)組中指定值、多個(gè)值

    db.testDB.save({"key1":"values"},{$pull:{"Tilte2":"haha"}}})

    db.testDB.updateOne({"key1":"values"},{$pullAll:{"Tilte2":["haha",1,2,3]}}})

    

批處理數(shù)據(jù)

    MONGODB數(shù)據(jù)的批處理分為有序處理和無(wú)序,有序處理數(shù)據(jù)過(guò)程發(fā)生錯(cuò)誤后就停止剩下數(shù)據(jù)的寫(xiě)入,無(wú)序操作以并行方式處理,若錯(cuò)誤會(huì)執(zhí)行其他的數(shù)據(jù)

    有序?qū)崿F(xiàn)

    var bulk=initializeOrderBulkOp()   //初始化有序列表

    插入有序列表bulk,最后執(zhí)行execute()

    bulk.insertOne(xx)

    bulk.execute()

    評(píng)估輸出:執(zhí)行execute()命令后,就能夠?qū)彶閳?zhí)行寫(xiě)入操作,評(píng)估是否成功寫(xiě)入了所有數(shù)據(jù),通過(guò)getOperations()

    bulk.getOperations()

    batchTYPE 1 insert 2 update 3 remove

    重命名集合

    db.testDB.renameCollection("newname")

    刪除數(shù)據(jù)一條或多條

    db.newname.deleteOne({"key1":"values"})  //刪除匹配一個(gè)文檔

    db.newname.deleteMany({})

    刪除集合的所有文檔

    db.newname.drop()   //removed   

    刪除集合

    db.dropDatabase()

分享文章:Mongodb大數(shù)據(jù)語(yǔ)法大全
本文路徑:http://www.chinadenli.net/article10/piejgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化營(yíng)銷(xiāo)型網(wǎng)站建設(shè)外貿(mào)建站云服務(wù)器網(wǎng)站內(nèi)鏈全網(wǎng)營(yíng)銷(xiāo)推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化