1、導入驅動
導入MongoDB JDBC 驅動 下載下傳連結
導入測試相關jar包
- juit-4.12.jar
- hamcrest-.2.2.jar
2、建立連接配接
下面的示例顯示了連接配接到本地計算機上的資料庫的五種方法。如果資料庫不存在,MongoDB 将為你建立它。
- 這裡的 “localhost” 表示連接配接的伺服器位址,27017 為端口号
- 可以省略 端口号 不寫,系統将預設端口号為 27017
- 也可以将 伺服器位址 和 端口号 都省略,系統預設伺服器位址為 “localhost”,端口号為 27017
- 指定MongoClinetURI 連接配接字元串
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);
3、通路資料庫
使用MongoClient裡的getDatabase() 方法通路資料庫。如果資料庫不存在,MongoDB 會在首次存儲該資料庫資料時建立該資料庫。
4、通路集合
使用MongoDatabase裡的getCollection()方法通路集合。如果集合不存在,MongoDB 會在首次存儲該集合的資料時建立該集合
5、建立文檔
5.1 插入一個文檔
若要在集合中插入單個文檔,可以使用集合的方法insertOne()
@Test
public void insertOne() {
//建立文檔
Document doc = new Document("name", "star潮")
.append("age", "23")
.append("addr", "亳州")
.append("course", Arrays.asList("MongoDB", "機器學習", "嵌入式", "軟體工程"));
//插入資料庫
students.insertOne(doc);
}
5.2 插入多個文檔
若要添加多個文檔,可以使用集合的insertMany()方法
@Test
public void insertMany() {
//建立文檔
Document doc1 = new Document("name", "海甯大哥")
.append("age", "18")
.append("addr", "南京")
.append("course", Arrays.asList("機器學習"));
Document doc2 = new Document("name", "劉梅西")
.append("age", "23")
.append("addr", "蕪湖")
.append("course", Arrays.asList("知識産權", "資訊檢索", "中特", "自然辨證法"));
Document doc3 = new Document("name", "張C羅")
.append("age", "22")
.append("addr", "蚌埠")
.append("course", Arrays.asList("MongoDB"));
ArrayList<Document> list = new ArrayList<>();
list.add(doc1);
list.add(doc2);
list.add(doc3);
//插入資料庫
students.insertMany(list);
}
6、查詢集合
6.1 查找集合中的第一個文檔
Document first = students.find().first();
System.out.println(first);
6.2 查找集合中的所有文檔
//擷取集合中的所有文檔
FindIterable<Document> iterable = students.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
6.3 查找與篩選器比對的文檔
@Test
public void findFilter() {
//指定查詢過濾器
Bson eq = eq("course", "MongoDB");
//查找字段具有該值的第一個文檔
Document first = students.find(eq).first();
System.out.println(first.toJson());
//查找字段具有該值的所有文檔
FindIterable<Document> iterable = students.find(eq);
MongoCursor<Document> iterator = iterable.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
7、更新文檔
7.1 要更新單個文檔
@Test
public void updateOne() {
//指定過濾器
Bson eq = eq("name", "star潮");
//更新一個文檔
UpdateResult updateResult = students.updateOne(eq, new Document("$set", new Document("name", "張XC")));
System.out.println(updateResult);
}
7.2 更新多個文檔
//把大于20歲的學生年齡改成18歲
@Test
public void updateMany() {
Bson gt = Filters.gt("age", "20");
UpdateResult updateResult = students.updateMany(gt, new Document("$set", new Document("age", "18")));
System.out.println(updateResult);
}
8、删除文檔
@Test
public void delete() {
//删除一條文檔
students.deleteOne(eq("name","張XC"));
//删除多條文檔
students.deleteMany(eq("age","18"));
}