1. mongodb-driver是mongo官方推出的java連接mongoDB的驅動包,相當於JDBC驅動。
(1)通過maven倉庫導入:https://mvnrepository.com/artifact/org.mongodb/mongodb-driver
(2)官網中下載相應的java的驅動:http://docs.mongodb.org/ecosystem/drivers/java/
(3)不同的驅動使用的jar也不相同參考:http://mongodb.github.io/mongo-java-driver/
例如:
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>3.11.2</version> </dependency> </dependencies>
2. 創建方法類
2.1 查詢全部,遍歷打印
package mongodb.test; import org.bson.Document; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; public class Mongodb { /** * 查詢打印全部集合 */ public static void mongoQueryAll() { //1.創建鏈接 MongoClient client = new MongoClient("localhost"); //2.打開數據庫test MongoDatabase db = client.getDatabase("test"); //3.獲取集合 MongoCollection<Document> collection = db.getCollection("stu"); //4.查詢獲取文檔集合 FindIterable<Document> documents = collection.find(); //5.循環遍歷 for (Document document : documents) { System.out.println(document); } //6.關閉連接 client.close(); } public static void main(String[] args) { mongoQueryAll(); }
//打印輸出stu全部數據 Document{{_id=5d7374e836a89c5a3d18b87a, name=xiaohua}} Document{{_id=2.0, sn=002, name=xiaogang}} Document{{_id=3.0, sn=003, name=zhangfei, job=前鋒戰將}} Document{{_id=5d73782736a89c5a3d18b87b, sn=004, name=xiaobingbing}} Document{{_id=5d7396b44ec120618b2dd0cb, name=Document{{surname=李, name=世名}}, job=[皇帝, 大人物, 大丈夫, 功成名就]}}
2.2 條件查詢
/** * 條件查詢:如查詢id為xxxx的學生所有信息 */ public static void mongoConditionQuery() { //1.創建鏈接 MongoClient client = new MongoClient("localhost"); //2.打開數據庫test MongoDatabase db = client.getDatabase("test"); //3.獲取集合 MongoCollection<Document> collection = db.getCollection("stu"); //4.構建查詢條件,按照name來查詢 BasicDBObject stu = new BasicDBObject("name","zhangfei"); //5.通過id查詢記錄,獲取文檔集合 FindIterable<Document> documents = collection.find(stu); //5.打印信息 for (Document document : documents) { System.out.println("name:"+document.getString("name")); System.out.println("sn:"+document.getString("sn")); System.out.println("job:"+document.getString("job")); } //6.關閉連接 client.close(); } public static void main(String[] args) { mongoConditionQuery(); }
//執行輸出 name:zhangfei sn:003 job:前鋒戰將
注意:當需要查詢條件+判斷的時候這樣寫,例如查詢學號sn>003的學員
//查詢sum大於3的學員 BasicDBObject stu = new BasicDBObject("sum",new BasicDBObject("$gt",003));
2.3 插入語句
/** * 插入語句 */ public static void mongoInsert() { //1.創建鏈接 MongoClient client = new MongoClient("localhost"); //2.打開數據庫test MongoDatabase db = client.getDatabase("test"); //3.獲取集合 MongoCollection<Document> collection = db.getCollection("stu"); //4.准備插入數據 HashMap<String, Object> map = new HashMap<String, Object>(); map.put("sn","005"); map.put("name","xiaoA"); map.put("job","A工作"); map.put("sum",6); //5.將map轉換成document Document document = new Document(map); collection.insertOne(document); //6.關閉連接 client.close(); } //測試執行 public static void main(String[] args) { mongoInsert(); }
批量插入,僅供參考:
//當需要插入多條文檔的時候,循環進行單條插入當然是可以,但是效率不高,MongoDB提供了批量插入的方法 List<DBObject> objs = new ArrayList<DBObject>(); objs.add(new BasicDBObject("name","user29").append("age", 30).append("sex", 1)); objs.add(new BasicDBObject("name","user30").append("age", 30).append("sex", 1)); collection.insert(objs); //這樣就批量進行了插入。批量插入通過一次請求將數據傳遞給數據庫,然后由數據庫進行插入,比循環單條插入節省了每次進行請求的資源。
學習后總結,不足之處請指出,后續修改!