Mongodb大數據語法大全-創新互聯

JSON和MONGODB

創新互聯主營陜西網站建設的網絡公司,主營網站建設方案,成都app軟件開發公司,陜西h5微信小程序開發搭建,陜西網站營銷推廣歡迎陜西等地區企業咨詢

JSON不止是一種交換數據的方式,也是一種存儲數據的良好方式,實際上MONGODB并未使用JSON存儲數據,而是使用由MONGODB團隊開發的一種稱為BSON的開放數據格式。

面向文檔存儲BSON

BSON是一個開放標準,BSON存儲使用的空間比JSNO(CouchDB一個強大的面向文檔數據庫)多在相同版本情況下。

BSON的優勢在于

1、處理數據比JSON快,消耗一定的存儲空間,簡單說BSON更方便瀏覽,遍歷索引頁非常快。

2、使用BSON容易將它數據快速轉換為編程余元的原生數據格式

3、BSON也提供對JSON的一些擴展,通過BSON可以存儲二進制數據,以及處理特定的數據類型,因此,BSON可以存儲任何JSON文檔,但有效的BSON文檔可能不是有效的JSON

瀏覽數據庫

use testDB  //切換已有數據庫或者創建新的數據庫

查看可用的數據庫和集合

show dbs   //只會顯示出已經存在的數據庫

show collections //顯示當前數據庫中的所有集合

集合中插入數據

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

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

db.test.insertOne(douctment)

    插入數據時,鍵名必須遵守如下規則:

    $字符不能是鍵名的第一個字符

    圓點[.]不能出現在鍵中

    名稱_id被保留使用

    集合的名稱不能超過128個字符

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

    集合名必須以字母或下劃線開頭

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

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

全部數據查詢

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

獲取特定類型的文檔

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

獲取values相關的數據標題,忽略其他

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

使用函數sort、limit和skip

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

db.testDB.find().limit(10)   //取文檔前N個結果數目

db.testDB.find().skip(20)    //跳過文檔的前N個數據

 組合使用這些函數

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

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

自然順序:是數據庫中結合的原生排序方法,所以如果在查詢集合中的文檔時,如果沒有顯示指定排序順序,結果將默認按照前向自然順序返回。

固定集合:是數據庫的一種集合,它的自然順序保證與文檔插入的順序一致,保證自然順序一直與文檔插入順序一致,另一優點是集合的大小固定,最老的數據將被刪除,最新的數據將被添加到末端,保證自然順序與文檔插入的順序一致

固定集合必須使用createCollection函數,如創建名為auth的固定集合

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

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

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

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

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

查看集合的大小

db.testDB.stats()

獲取單個文檔

db.testDB.findOne()

使用聚集命名

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

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

執行額外的過濾統計

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

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

使用distinct函數獲取唯一值

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

將結果分組group()

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

    參數key指定希望使用哪個鍵對結果進行分組。

    參數initial允許為每個已分組的結果提供基數(元素開始開始統計的起始基數),如果希望返回指定的數字,參數默認為0

    參數reduce把所有類似的條目分組在一起,它接受2個參數:items和pre

    db.testDB.group(

    key:{"Tilte":true},

    initial:{Total:0},

    reduct:function(items,pre){

    prev.Total+=1

    }

    )

使用條件操作符

    $gt大于參數

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

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

    指定一個匹配的數組

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

    匹配文檔所有屬性$all

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

    在文檔中搜索多個表達

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

    使用$slice獲取文檔

    db.testDB.find({"key1":"values1"},{"Cast":{$slice:3}})  //獲取前3項,負數為后N個

    類似LIMT  n,m

    搜索奇數和偶數$MOD

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

    使用$size過濾結果:過濾出文檔中數組大小

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

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

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

    基于bson類型匹配結果:$type可以基于BSON類型匹配結果:

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

    匹配完整的數組  $elemMatch操作符


    使用正則表達式

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


更新數據

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

    參數criteria可用于指定一個查詢

    參數objNew指定更新信息

    參數options用于指定更新文檔時的選項,有upsert和multi,upsert有更新的就更新無更新就就創建,multi可以指定是否應該更新所有匹配的文檔或只更新第一個文檔

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

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

    ##此更新會導致多余的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})

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

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

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

    數組中添加數據

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

    數組中刪除元素

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

    刪除數組中指定值、多個值

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

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


批處理數據

    MONGODB數據的批處理分為有序處理和無序,有序處理數據過程發生錯誤后就停止剩下數據的寫入,無序操作以并行方式處理,若錯誤會執行其他的數據

    有序實現

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

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

    bulk.insertOne(xx)

    bulk.execute()

    評估輸出:執行execute()命令后,就能夠審查執行寫入操作,評估是否成功寫入了所有數據,通過getOperations()

    bulk.getOperations()

    batchTYPE 1 insert 2 update 3 remove

    重命名集合

    db.testDB.renameCollection("newname")

    刪除數據一條或多條

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

    db.newname.deleteMany({})

    刪除集合的所有文檔

    db.newname.drop()  //removed

    刪除集合

    db.dropDatabase()

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文標題:Mongodb大數據語法大全-創新互聯
當前鏈接:http://m.kartarina.com/article14/cddgge.html

成都網站建設公司_創新互聯,為您提供移動網站建設網站制作做網站搜索引擎優化建站公司手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站
主站蜘蛛池模板: 久久久久久av无码免费看大片| 亚洲日韩精品无码AV海量| 亚洲va成无码人在线观看 | 18禁超污无遮挡无码免费网站国产 | 亚洲无码视频在线| 亚洲国产综合无码一区| 亚洲av永久中文无码精品| 亚洲午夜AV无码专区在线播放| 免费A级毛片无码A∨免费| av无码一区二区三区| 亚洲成a人无码亚洲成www牛牛| 免费无码又爽又刺激网站| 久久久久久亚洲精品无码| 在线看无码的免费网站| 午夜无码A级毛片免费视频| 日韩激情无码免费毛片| 亚洲午夜无码毛片av久久京东热| 自慰无码一区二区三区| 久久久久亚洲?V成人无码| 精品无码国产一区二区三区51安| 亚洲A∨无码无在线观看| 久久人妻少妇嫩草AV无码蜜桃| 亚洲av无码av在线播放| 亚洲精品9999久久久久无码| 无码人妻一区二区三区在线| 亚洲日韩精品无码一区二区三区| 国产成人无码区免费A∨视频网站| 久久青青草原亚洲av无码app| 无码毛片视频一区二区本码 | 亚洲AV成人无码天堂| 久青草无码视频在线观看| 亚洲AV色吊丝无码| 无码无遮挡又大又爽又黄的视频| 国产亚洲?V无码?V男人的天堂| 国产精品成人99一区无码| 国产精品爽爽V在线观看无码| 免费无码又爽又刺激毛片| 精品一区二区三区无码视频| 色综合热无码热国产| 亚洲AV无码一区二区三区在线观看 | 亚洲成在人线在线播放无码 |