本篇文章為大家展示了CouchDB與MongoDB在查詢操作上有哪些區別,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
CouchDB與MongoDB一樣是文檔存儲,他們在很多方面都很相似。簡單的說,就是MongoDB的查詢是動態查詢,可以在已有數據上進行任何規定條件的查詢,當然,為了使我們的查詢更快,需要合理的設計索引。
CouchDB與MongoDB在查詢操作上有哪些區別
MongoDB和CouchDB都是面向文檔的數據庫,它們都使用JSON文檔格式,它倆通常都被看作是NoSQL數據庫,并且現在都很時髦,有很多的共同點,但談到查詢時,兩者的差別就很明顯了,CouchDB需要預定義視圖(本質上是JavaScriptMapReduce函數),而MongoDB支持動態查詢(基本上和傳統關系數據庫上的即席查詢類似),更重要的是,談到查詢時,CouchDB的API是RESTful,而MongoDB的API更原生化,這意味著在代碼中發出一個查詢就要使用一個驅動。
例如,使用CouchDB時,為了插入一些數據,可以使用一些外部工具,如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"])
注意,在這種情況下,我必須為停車票指定一個編號(1234334325),順便提一下,也可以要求CouchDB使用UUID,如向/_uuids路徑發出一個HTTPGET請求。
例如,如果我想找出由OfficerGrey開出的所有票,我必須定義一個視圖,視圖是執行JavaScriptMapReduce函數的簡單URL,因此我可以快速實現一個函數來提取officer屬性等于RobertGrey的所有文檔。
function(doc){
if(doc.officer=="RobertGrey"){
emit(null,doc);
}
}
我必須給這個視圖取一個名字,當我向這個視圖發出HTTPGET請求時,至少可以得到一個文檔。
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在查詢操作上有哪些區別
總的來說,使用CouchDB時,我不能很快地發出一個即席RESTful調用查詢信息,必須先定義一個查詢(也叫視圖),然后將其暴露出來。相反,使用MongoDB時,它和大多數關系數據庫沒多大區別,你可以在運行時查詢你想要看到的任何信息。
例如,下面是我使用MongoDB的原生Java驅動實現的停車票實例:
DBCollectioncoll=db.getCollection("parking_tickets");
BasicDBObjectdoc=newBasicDBObject();
doc.put("officer","RobertGrey");
doc.put("location","199CastleDr");
doc.put("vehicle_plate","NewYork77777");
//...
coll.insert(doc);
假設以后我要查詢RobertSmith發出的停車票,只需要簡單修改一下officer屬性值就可以了,如:
BasicDBObjectquery=newBasicDBObject();
query.put("officer","RobertSmith");
DBCursorcur=coll.find(query);
while(cur.hasNext()){
System.out.println(cur.next());
}
雖然MongoDB和CouchDB有很多相似之處,但在查詢方面的確有著本質的不同,CouchDB需要使用MapReduce,而MongoDB更多的是面向動態的查詢,當然MongoDB也是支持MapReduce的。
上述內容就是CouchDB與MongoDB在查詢操作上有哪些區別,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。
名稱欄目:CouchDB與MongoDB在查詢操作上有哪些區別-創新互聯
轉載來于:http://vcdvsql.cn/article32/hdspc.html
成都網站建設公司_創新互聯,為您提供網站策劃、用戶體驗、網站營銷、網站設計公司、營銷型網站建設、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯