java操作mongoDB查詢的實(shí)例詳解
java操作mongo查詢的實(shí)例詳解
前言:
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類(lèi)似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類(lèi)型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類(lèi)似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類(lèi)似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
在可視化工具中查詢非常方便,類(lèi)似于 {' key' : ' value' },這種查詢,高級(jí)查詢也類(lèi)似,比如查詢某個(gè)字段的值大于5,我們就可以查 {' key' : { $gt : 5} }, 這要?dú)w功于monggo 面向集合存儲(chǔ),存儲(chǔ)對(duì)象類(lèi)型的數(shù)據(jù)(JSON的二進(jìn)制數(shù)據(jù)BSON),這要以來(lái),查詢很方便,其它的高級(jí)查詢,比如小于$lt,大于等于$gte,小于等于$lte, 在某個(gè)范圍$in, 不在某個(gè)范圍$nin,等等,都可以通過(guò)上面的方式查詢出來(lái)。
現(xiàn)在通過(guò)java中的一些代碼展示通過(guò)java來(lái)操縱mongo 查詢。其中包含準(zhǔn)確匹配查詢,高級(jí)查詢,在兩個(gè)時(shí)間范圍內(nèi)查詢,模糊查詢,分頁(yè)實(shí)現(xiàn)等查詢。
詳細(xì)見(jiàn)代碼。
try {
System.out.println("=========********測(cè)試3開(kāi)始**********===========*************");
//先獲取mongo庫(kù)的集合DBCollection對(duì)象
DBCollection data = (DBCollection) mongoClientService.getColectionByName("mongo庫(kù)集合名稱");
BasicDBObject query3 = new BasicDBObject();
query3.put("name","Tom");//查找姓名為T(mén)om
//查詢兩個(gè)時(shí)間范圍的,用map包裝一下
Map<String, Object> queryMap = new HashMap<>();
queryMap.put("$gt", "1496911821071");
queryMap.put("$lt", "1496915447871");
query3.put("timeStamp", new BasicDBObject(queryMap));
//模糊匹配rule查詢
query3.put("businessRuleName", new BasicDBObject("$regex","rule"));
DBCursor result3 = data.find(query3);
String resultCode = "4";
if ("4".equals(resultCode)) {
BasicDBList cond = new BasicDBList();
cond.add("0");
cond.add("1");
cond.add("2");
cond.add("3");
query3.put("resultCode", new BasicDBObject("$nin", cond));//查詢r(jià)esultCode不是0,1,2,3的
}
System.out.println(result3.count());//count()方法得到查詢到的記錄數(shù)
result3.skip(10).limit(20);//分頁(yè),skip():從第幾條開(kāi)始,limit():限制返回的條數(shù)
while (result3.hasNext()) {
DBObject dbObject = (DBObject) result3.next();
System.out.println(JSON.serialize(dbObject));
System.out.println("------------");
}
System.out.println(result3.count());//
System.out.println("=========********測(cè)試3結(jié)束**********===========*************");
} catch (Exception e) {
e.printStackTrace();
System.out.println("---------測(cè)試3異常了----------");
}
上面包含了很多方式的查詢的例子,主要操縱的是 DBCollection, BasicDBObject, DBCursor , BasicDBList 這四個(gè)類(lèi),僅供參考。
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
MongoDB 導(dǎo)出導(dǎo)入備份恢復(fù)數(shù)據(jù)詳解及實(shí)例
這篇文章主要介紹了MongoDB 導(dǎo)出導(dǎo)入備份恢復(fù)數(shù)據(jù)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-10-10
解決MongoDB占用內(nèi)存過(guò)大頻繁死機(jī)的方法詳解
這篇文章主要介紹了解決MongoDB占用內(nèi)存過(guò)大頻繁死機(jī)的方法詳解,需要的朋友可以參考下2020-02-02
MongoDB數(shù)據(jù)庫(kù)安裝配置、基本操作實(shí)例詳解
這篇文章主要介紹了MongoDB數(shù)據(jù)庫(kù)安裝配置、基本操作,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫(kù)安裝配置具體步驟、相關(guān)命令與基本操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2020-01-01
關(guān)于單臺(tái)MongoDB實(shí)例開(kāi)啟Oplog的過(guò)程詳解
這篇文章主要給大家介紹了關(guān)于單臺(tái)MongoDB實(shí)例開(kāi)啟Oplog的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
Mongodb數(shù)據(jù)庫(kù)兩種啟動(dòng)方法小結(jié)
MongoDB是一種開(kāi)源的服務(wù)器端NoSQL數(shù)據(jù)庫(kù)管理系統(tǒng),它提供了一種靈活的框架,可以快速地存儲(chǔ)、處理和管理大量的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Mongodb數(shù)據(jù)庫(kù)兩種啟動(dòng)方法的相關(guān)資料,需要的朋友可以參考下2023-12-12
MongoDB特定類(lèi)型的查詢語(yǔ)句實(shí)例
在關(guān)系型數(shù)據(jù)庫(kù)中,可以實(shí)現(xiàn)基于表的各種各樣的查詢,下面這篇文章主要給大家介紹了關(guān)于MongoDB特定類(lèi)型查詢的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
淺析Mongodb性能優(yōu)化的相關(guān)問(wèn)題
數(shù)據(jù)庫(kù)性能對(duì)軟件整體性能的影響是不言而喻的,那么,當(dāng)我們使用MongoDB時(shí)改如何提高數(shù)據(jù)庫(kù)性能呢?這篇文章通過(guò)范式化與反范式化、填充因子的使用和索引的使用三個(gè)方面來(lái)談了談Mongodb性能優(yōu)化的相關(guān)問(wèn)題,有需要的朋友們下面來(lái)一起看看吧。2016-10-10

