2020重新出發,NOSQL,Java操作MongoDB資料庫
Java操作MongoDB資料庫
除了通過啟動 mongo 程序進如 Shell 環境訪問資料庫外,MongoDB 還提供了其他基於程式語言的訪問資料庫方法。MongoDB 官方提供了 Java 和 Python 語言的驅動包,利用這些驅動包可使用多種程式設計方法來連線並操作 MongoDB 資料庫。
介紹一下如何設定和使用 MongoDB JDBC 驅動程式,通過 JDBC 實現與 MongoDB 服務端的通訊功能,使用者可以在此基礎上進行各種 Java 程式的開發。
安裝 Java 語言驅動包
1) Maven 方式
推薦使用 Maven 的方式管理 MongoDB 的相關依賴包,Maven 專案中只需匯入如下 pom 依賴包即可:
<dependency> <groupld>org.mongodb</groupld> <artifactld>mongodb-driver</artifact1d> <version>3.4</version> </dependency> <dependency> <groupld>org.mongodb</groupld> <artifactld>bson</artifactId> <version>3.4</version> </dependency> <dependency> <groupld>org.mongodb</groupId> <artifactId>Mongodb-driver-core</artifactld> <version>3.4</version> </dependency>
2) 手動匯入
如果手動下載 mongodb-driver,還必須下載其依賴項 bson 和 mongodb-driver-core。在這裡需要注意的是,這三個安裝包需要配合使用,並且版本必須一致,否則執行時會報錯。
首先安裝 MongoDB,本節例項為 MongoDB 3.4.2 版本;然後安裝 Java 開發工具,本節採用 Eclipse 開發工具。通過 Github 網站下載驅動包,分別為 mongodb-driver-3.4.2.jar、mongodb-driver-core-3.4.2.jar、bson-3.4.2.jar。
程式設計實現
1) import 基礎類庫
若要完成 MongoDB 的增、刪、改、查等操作,則需要匯入很多類庫。
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.dient.MongoCollection;
可以根據程式設計需要新增必要的類庫。
2) 連線資料庫
若要連線資料庫,則需要指定資料庫名稱。如果資料庫不存在,則 MongoDB 會自動建立資料庫。如下程式碼實現了簡易的資料庫連線:
public class App {
public static void main(String[] args) {
try {
//連線MongoDB伺服器,埠號為27017
MongoClient mongoClient = new MongoClient("localhost", 27017);
//連線資料庫
MongoDatabase mDatabase = mongoClient.getDatabase("test"); //test可選
System.out.printin("Connect to database successfully!");
System.out.printIn("MongoDatabase inof is : "+mDatabase.getName());
} catch (Exception e) {
System.err.printIn(e.getClass().getName() + ": " + e.getMessage());
}
}
}
3) 切換至集合
連線至具體資料庫以後,使用以下程式碼切換到集合,如果集合不存在,則使用如下程式碼新建集合:
MongoCollection collection = database.getCollection("myTestCollection");
4) 插入文件
切換至集合後,就可以進行文件的增、刪、改、查操作。首先定義文件,並使用 append。方法追加內容,程式碼如下:
Document document = new Document("_id", 1999)
.append("title", "MongoDB Insert Demo")
.append("description","database")
.append("likes", 30)
.append("by", "demo point")
.append("url", "http://c.biancheng.net/mongodb/");
document 為 BSON 型別的文件,實際上為一個列表,每項有兩個元素,即欄位名和值。
文件定義完成後,再使用 insertOne 方法將此文件插入集合:
collection.insertOne(document);
如果插入多條資料,需要先定義一個 Document 列表,然後用 add() 方法新增多個 Document 元素,最後用 insertMany() 方法插入,程式碼如下:
List<Document> documents = new ArrayList<Document>();documents.add(document1);collection.insertMany(documents);
5) 刪除文件
使用 delete() 方法刪除一個或多個文件,程式碼如下:
collection.deleteOne(document);collection.deleteMany(new Document ("likes", 30));
6) 更新資料
使用 updataOne() 方法更新一條資料或多個數據,程式碼如下:
collection.updataOne (eq ("likes", 30), new Document ("$set", new Document ("likes", 50)));java
updateOne() 方法中有兩個引數,第一個引數表示更新的內容等於 ("likes",30) 的文件,第二個引數為要修改的內容,使用 $set 引數修改當前值,修改的內容為 ("likes", 50)。
7) 查詢資料
利用遊標型別實現資料的查詢和遍歷顯示,使用遊標前需要 import MongoCursor 類庫。
import com.mongodb.client.MongoCursor;
document Doc = (Document)collection.find(eq("likes", 30)).iterator();
MongoCursor<Document> cursor =collection.find().iterator();
try{
while (cursor.hasNext()){
System.out.printin(cursor.next().toJson());
}
} finally{
Cursor.close();
}
設定 find() 方法的引數為查詢條件,引數為比較的 Document 元素。
8) 其他方法
刪除資料庫或集合,程式碼如下:
mDatabase.drop();collection.drop();
關閉客戶端連線,程式碼如下:
mongoClient.close();