Java使用mongodb-driver來操做mongodb
建立新工程
建立新的demo工程,引入MongoDB的jar包的座標:java
<dependencies> <!--mongo依賴--> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver</artifactId> <version>3.6.3</version> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-core</artifactId> <version>3.6.3</version> </dependency> </dependencies>
編寫測試代碼(普通查詢)
在測試包com.cxf.test.MongoTest中,編寫以下的測試代碼,用於遍歷獲取全部的數據:mongodb
// 鏈接mongo服務器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 獲取要操做的數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //獲得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //獲得集合中的全部文檔 FindIterable<Document> findIterable= mongoCollection.find(); //遍歷 for (Document document:findIterable) { System.out.println("內容爲:"+document.getString("content")); System.out.println("用戶id爲:"+document.getString("userid")); System.out.println("訪問量 :" +document.getInteger("visits")); } mongoClient.close();
默認的數據類型的浮點型,對應了java 的Double類型.
若是是用NumberInt存儲的,那麼就用java的Integer類型來接收.
若是是用雙引號括起來的, 那麼就用String類型接收數據庫
每一列的數據類型要固定, 不能亂變。
服務器
條件查詢
等於條件查詢
在測試類的main方法中,添加以下的代碼,即表明了只查詢userid爲1013的數據.
封裝了BasicDBObject 對象中, 把這個對象傳遞到find方法中,即表明了條件查詢測試
//封裝查詢的條件 BasicDBObject basicDb = new BasicDBObject("userid", "1013"); //獲得集合中的全部文檔 FindIterable<Document> findIterable= mongoCollection.find(basicDb);
完整的代碼:this
/** * @description: * @author:柴新峯 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 鏈接mongo服務器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 獲取要操做的數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //獲得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //封裝查詢的條件 BasicDBObject basicDb = new BasicDBObject("userid", "1013"); //獲得集合中的全部文檔 FindIterable<Document> findIterable= mongoCollection.find(basicDb); //遍歷 for (Document document:findIterable) { System.out.println("內容爲:"+document.getString("content")); System.out.println("用戶id爲:"+document.getString("userid")); System.out.println("訪問量 :" +document.getInteger("visits")); } mongoClient.close(); } }
結果輸出:
spa
大於條件查詢
查詢訪問量大於1000的數據
若是用命令來查詢大於1000的數據,那麼命令以下code
db.spit.find({visits:{$gt:1000}})
能夠看到是用兩個{}的,所以在代碼中,就對應了兩個BasicDBObject 對象
代碼以下
在BasicDBObject對象中嵌套一個BasicDBObject,嵌套的對象用於寫入大於的條件。
完整代碼以下:對象
package com.tensquare; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; /** * @description: * @author:柴新峯 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 鏈接mongo服務器 MongoClient mongoClient = new MongoClient("121.36.25.190",27017); // 獲取要操做的數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //獲得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); //封裝查詢的條件 BasicDBObject basicDb = new BasicDBObject("visits", new BasicDBObject("$gt",1000)); //獲得集合中的全部文檔 FindIterable<Document> findIterable= mongoCollection.find(basicDb); //遍歷 for (Document document:findIterable) { System.out.println("內容爲:"+document.getString("content")); System.out.println("用戶id爲:"+document.getString("userid")); System.out.println("訪問量 :" +document.getInteger("visits")); System.out.println("****************************************************"); } mongoClient.close(); } }
結果輸出:
圖片
添加數據到mongo中
經過查看Document的源碼,發現其構造方法能夠傳入一個map,所以經過 map來封裝插入的數據.
源碼以下:
public Document() { this.documentAsMap = new LinkedHashMap(); } public Document(String key, Object value) { this.documentAsMap = new LinkedHashMap(); this.documentAsMap.put(key, value); } public Document(Map<String, Object> map) { this.documentAsMap = new LinkedHashMap(map); }
完整代碼以下:
package com.tensquare; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import java.util.HashMap; import java.util.Map; /** * @description: * @author:柴新峯 * @create:2020/9/7 */ public class MongoTest { public static void main(String[] args) { // 鏈接mongo服務器 MongoClient mongoClient = new MongoClient("121.36.25.190", 27017); // 獲取要操做的數據庫 MongoDatabase mongoDatabase = mongoClient.getDatabase("spitdb"); //獲得要操做的集合 MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("spit"); Map<String, Object> map = new HashMap<String, Object>(); map.put("_id", "9"); map.put("content", "測試mongo的添加"); map.put("userid", "1"); map.put("visits", "5000"); Document documentMap = new Document(map); //spit爲操做的集合,至關於操做的表 mongoCollection.insertOne(documentMap); //獲得集合中的全部文檔 FindIterable<Document> findIterable = mongoCollection.find(); //遍歷 for (Document document : findIterable) { System.out.println("內容爲:" + document.getString("content")); System.out.println("用戶id爲:" + document.getString("userid")); System.out.println("訪問量 :" + document.getInteger("visits")); System.out.println("****************************************************"); } mongoClient.close(); } }
結果以下: