基於 MongoDB Java Driver (舊版 API) 的完整操作範例,涵蓋連線建立、文件增刪改查,適用於維護舊專案或理解基礎 API。
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("test");
DBCollection collection = db.getCollection("customer");
DBCursor cursor = collection.find();
System.out.println("總筆數: " + collection.getCount());
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
mongo.close();
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("test");
DBCollection collection = db.getCollection("customer");
// 依 _id 刪除
BasicDBObject query = new BasicDBObject("_id", new ObjectId("5199ee647d5fc789bc760c07"));
collection.remove(query);
mongo.close();
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("test");
DBCollection collection = db.getCollection("customer");
DBObject doc = new BasicDBObject();
doc.put("name", "jack");
doc.put("age", 24);
collection.insert(doc);
mongo.close();
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("test");
DBCollection collection = db.getCollection("customer");
// 查詢條件
BasicDBObject query = new BasicDBObject("_id", new ObjectId("519e2e393296cf3baccdb10c"));
// 取得現有文件並修改
BasicDBObject doc = (BasicDBObject) collection.findOne(query);
doc.put("name", "wangwu");
// 執行更新
int updatedCount = collection.update(query, doc).getN();
System.out.println("更新筆數: " + updatedCount);
mongo.close();
| 類別 | 用途 |
|---|---|
| Mongo | 連線管理,對應 MongoClient (新版) |
| DB | 資料庫操作入口 |
| DBCollection | 集合操作 (CRUD、索引、統計) |
| DBObject / BasicDBObject | 文件表示,類似 Map |
| DBCursor | 查詢結果游標 |
| ObjectId | 文件唯一識別碼 |
舊版 API (Mongo, DB, DBCollection) 已棄用,新專案請使用:
// Maven 依賴
org.mongodb
mongodb-driver-sync
4.11.0
// 新版寫法
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("test");
MongoCollection collection = database.getCollection("customer");
// 查詢
FindIterable docs = collection.find();
for (Document doc : docs) {
System.out.println(doc.toJson());
}
// 插入
Document newDoc = new Document("name", "jack").append("age", 24);
collection.insertOne(newDoc);
// 更新
collection.updateOne(eq("_id", new ObjectId("...")), set("name", "wangwu"));
// 刪除
collection.deleteOne(eq("_id", new ObjectId("...")));
注意: 生產環境務必使用連線池、異常處理、關閉資源,並考慮使用 Spring Data MongoDB 簡化開發。