内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

CouchDB與MongoDB在查詢操作上有哪些區(qū)別-創(chuàng)新互聯(lián)

本篇文章為大家展示了CouchDB與MongoDB在查詢操作上有哪些區(qū)別,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)主營德陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā)公司,德陽h5小程序制作搭建,德陽網(wǎng)站營銷推廣歡迎德陽等地區(qū)企業(yè)咨詢

CouchDB與MongoDB一樣是文檔存儲(chǔ),他們在很多方面都很相似。簡單的說,就是MongoDB的查詢是動(dòng)態(tài)查詢,可以在已有數(shù)據(jù)上進(jìn)行任何規(guī)定條件的查詢,當(dāng)然,為了使我們的查詢更快,需要合理的設(shè)計(jì)索引。

CouchDB與MongoDB在查詢操作上有哪些區(qū)別

MongoDB和CouchDB都是面向文檔的數(shù)據(jù)庫,它們都使用JSON文檔格式,它倆通常都被看作是NoSQL數(shù)據(jù)庫,并且現(xiàn)在都很時(shí)髦,有很多的共同點(diǎn),但談到查詢時(shí),兩者的差別就很明顯了,CouchDB需要預(yù)定義視圖(本質(zhì)上是JavaScriptMapReduce函數(shù)),而MongoDB支持動(dòng)態(tài)查詢(基本上和傳統(tǒng)關(guān)系數(shù)據(jù)庫上的即席查詢類似),更重要的是,談到查詢時(shí),CouchDB的API是RESTful,而MongoDB的API更原生化,這意味著在代碼中發(fā)出一個(gè)查詢就要使用一個(gè)驅(qū)動(dòng)。

例如,使用CouchDB時(shí),為了插入一些數(shù)據(jù),可以使用一些外部工具,如Groovy的RESTClient:

importstaticgroovyx.net.http.ContentType.JSON

importgroovyx.net.http.RESTClient

defclient=newRESTClient("http://localhost:5498/")

response=client.put(path:"parking_tickets/1234334325",

contentType:JSON,

requestContentType:JSON,

body:[officer:"RobertGrey",

location:"199CastleDr",

vehicle_plate:"NewYork77777",

offense:"Parkedinnoparkingzone",

date:"2010/07/31"])

注意,在這種情況下,我必須為停車票指定一個(gè)編號(1234334325),順便提一下,也可以要求CouchDB使用UUID,如向/_uuids路徑發(fā)出一個(gè)HTTPGET請求。

例如,如果我想找出由OfficerGrey開出的所有票,我必須定義一個(gè)視圖,視圖是執(zhí)行JavaScriptMapReduce函數(shù)的簡單URL,因此我可以快速實(shí)現(xiàn)一個(gè)函數(shù)來提取officer屬性等于RobertGrey的所有文檔。

function(doc){

if(doc.officer=="RobertGrey"){

emit(null,doc);

}

}

我必須給這個(gè)視圖取一個(gè)名字,當(dāng)我向這個(gè)視圖發(fā)出HTTPGET請求時(shí),至少可以得到一個(gè)文檔。

response=client.get(path:"parking_tickets/_view/by_name/officer_grey",

contentType:JSON,requestContentType:JSON)

assertresponse.data.total_rows==1

response.data.rows.each{

assertit.value.officer=="RobertGrey"

}

CouchDB與MongoDB在查詢操作上有哪些區(qū)別

總的來說,使用CouchDB時(shí),我不能很快地發(fā)出一個(gè)即席RESTful調(diào)用查詢信息,必須先定義一個(gè)查詢(也叫視圖),然后將其暴露出來。相反,使用MongoDB時(shí),它和大多數(shù)關(guān)系數(shù)據(jù)庫沒多大區(qū)別,你可以在運(yùn)行時(shí)查詢你想要看到的任何信息。

例如,下面是我使用MongoDB的原生Java驅(qū)動(dòng)實(shí)現(xiàn)的停車票實(shí)例:

DBCollectioncoll=db.getCollection("parking_tickets");

BasicDBObjectdoc=newBasicDBObject();

doc.put("officer","RobertGrey");

doc.put("location","199CastleDr");

doc.put("vehicle_plate","NewYork77777");

//...

coll.insert(doc);

假設(shè)以后我要查詢RobertSmith發(fā)出的停車票,只需要簡單修改一下officer屬性值就可以了,如:

BasicDBObjectquery=newBasicDBObject();

query.put("officer","RobertSmith");

DBCursorcur=coll.find(query);

while(cur.hasNext()){

System.out.println(cur.next());

}

雖然MongoDB和CouchDB有很多相似之處,但在查詢方面的確有著本質(zhì)的不同,CouchDB需要使用MapReduce,而MongoDB更多的是面向動(dòng)態(tài)的查詢,當(dāng)然MongoDB也是支持MapReduce的。

上述內(nèi)容就是CouchDB與MongoDB在查詢操作上有哪些區(qū)別,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

名稱欄目:CouchDB與MongoDB在查詢操作上有哪些區(qū)別-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article32/hdspc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、用戶體驗(yàn)、網(wǎng)站營銷、網(wǎng)站設(shè)計(jì)公司營銷型網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)

廣告

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

搜索引擎優(yōu)化
天全县| 南安市| 邢台市| 吴旗县| 丰县| 新乡县| 万州区| 石林| 华池县| 谷城县| 闽清县| 陕西省| 元谋县| 津市市| 内江市| 香格里拉县| 屏边| 海盐县| 高平市| 阿鲁科尔沁旗| 南川市| 桓台县| 海丰县| 桃园市| 无棣县| 句容市| 中方县| 金华市| 灵山县| 玉环县| 莒南县| 疏附县| 霍城县| 墨竹工卡县| 清流县| 正蓝旗| 普格县| 巴林右旗| 开封县| 铅山县| 白水县|