1. 程式人生 > >mongoDB查詢,高階查詢,含java操作mongo查詢

mongoDB查詢,高階查詢,含java操作mongo查詢

     MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。

     MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是他支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。

    在視覺化工具中查詢非常方便,類似於 {' key' : ' value' },這種查詢,高階查詢也類似,比如查詢某個欄位的值大於5,我們就可以查 {' key' : { $gt : 5} }, 這要歸功於monggo 面向集合儲存,儲存物件型別的資料(JSON的二進位制資料BSON),這要以來,查詢很方便,其它的高階查詢,比如小於$lt,大於等於$gte,小於等於$lte, 在某個範圍$in, 不在某個範圍$nin,等等,都可以通過上面的方式查詢出來。

     現在通過java中的一些程式碼展示通過java來操縱mongo 查詢。其中包含準確匹配查詢,高階查詢,在兩個時間範圍內查詢,模糊查詢,分頁實現等查詢。詳細見程式碼。

		try {
			System.out.println("=========********測試3開始**********===========*************");
			//先獲取mongo庫的集合DBCollection物件
			DBCollection data = (DBCollection) mongoClientService.getColectionByName("mongo庫集合名稱");
			
			BasicDBObject query3 = new BasicDBObject();
			query3.put("name","Tom");//查詢姓名為Tom

			//查詢兩個時間範圍的,用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));//查詢resultCode不是0,1,2,3的
			}
 			System.out.println(result3.count());//count()方法得到查詢到的記錄數

 			result3.skip(10).limit(20);//分頁,skip():從第幾條開始,limit():限制返回的條數

			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("=========********測試3結束**********===========*************");
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("---------測試3異常了----------");
		}

     上面包含了很多方式的查詢的例子,主要操縱的是 DBCollection, BasicDBObject, DBCursor , BasicDBList 這四個類,僅供參考。