Java 中 MongoDB 使用指南
MongoDB是當今非常流行的一款NoSQL資料庫,本文介紹如何使用MongoDB的Java驅動來操作MongoDB。
一、引入MongoDB Java Driver包
如果需要操作MongoDB的Java專案是一個Maven專案,可以在依賴中加上以下的配置。
<dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>2.13.2</version> </dependency> </dependencies>
或者通過直接下載jar包的方式使用,下載地址:mongo-java-driver-2.13.2.jar。
詳細的如何引入MongoDB jar包的方法可以參考官方文件。
二、連線MongoDB
可以使用MongoClient
來連線MongoDB,MongoClient
的使用方式如下:
MongoClient mongoClient = new MongoClient("localhost", 27017); DB db = mongoClient.getDB("mydb");
上面的程式碼連線了localhost:27017上MongoDB服務,並指定使用mydb資料庫。連線後便可以對這個資料庫作進一步的操作。
需要指出的是,MongoClient
是執行緒安全的,可以在多程程環境中共享同一個MongoClient
。通常來說,一個應用程式中,只需要生成一個全域性的MongoClient
例項,然後在程式的其他地方使用這個例項即可。
三、認證
可以使用多種方式對連線進行認證,下面介紹兩種方式。
1. 方式一:MongoCredential
MongoCredential
類的createCredential
方法可以指定認證的使用者名稱,密碼,以及使用的資料庫,並返回一個MongoCredential
物件。其方法的宣告如下:
static MongoCredential createCredential(String userName, String database, char[] password)
例如
MongoCredential credential = MongoCredential.createCredential("user", "mydb", "password".toCharArray();
上面建立了一個使用者名稱為user,密碼為password,資料庫為mydb的MongoCredential
物件。
將生成MongoCredential
的物件作為MongoClient
建構函式的引數。由於MongoClient
建構函式的為List<MongoCredential>
型別,所以需要先構造成一個List再傳遞。完整的認證的例子如下:
MongoCredential credential = MongoCredential.createCredential("user", "mydb", "password".toCharArray()); ServerAddress serverAddress = new ServerAddress("localhost", 27017); MongoClient mongoClient = new MongoClient(serverAddress, Arrays.asList(credential)); DB db = mongoClient.getDB("mydb");
2. 方式二:MongoClientURI
亦可以使用MongoClientURI
完成MongoDB的認證,它代表了一個URI物件。MongoClientURI
的建構函式接受一個String型別的字串,這個字串的格式如下:
mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]
生成的MongoClientURI
物件作為MongoClient
建構函式的引數,完整的認證例子如下:
String sURI = String.format("mongodb://%s:%s@%s:%d/%s", "user", "password", "localhost", 27017, "mydb"); MongoClientURI uri = new MongoClientURI(sURI); MongoClient mongoClient = new MongoClient(uri); DB db = mongoClient.getDB("mydb");
四、獲取一個集合
DBCollection coll = db.getCollection("mycol");
然後可以對指定的集合進行操作,例如,插入,刪除,查詢,更新文件等。
五、插入文件
例如,一個文件以Json來表示如下,
{ “name”: “mongo”, “info”: { “ver”: “3.0” } }
現在需要插入到集合mycol中。為了插入到集合中,可以使用BasicDBObject
構造一個文件。
BasicDBObject doc = new BasicDBObject("name", "mongo").append("info", new BasicDBObject("ver", "3.0")); coll.insert(doc);
六、查詢文件
1. 通過findOne查詢一個符合條件文件
通過findOne
可以查詢一個符合條件的文件。例如,對於上面的mycol集合,執行以下命令:
DBObject myDoc = coll.findOne(); System.out.println(myDoc);
將輸出mycol集合中的第一個文件。也可以通過指定findOne
的查詢引數,來查詢符合查詢條件的一個文件。
2. 通過find查詢所有符合條件的文件
find
用來查詢符合條件的文件,它返回一個DBCursor
物件,通過遍歷DBCursor
物件,可以獲得所有符合查詢條件的文件。
為了說明和測試,我們先插入一批以下格式的文件
{ “i”: value }
for (int i=0; i < 100; i++) { coll.insert(new BasicDBObject("i", i)); }
find
的使用示例如下:
DBCursor cursor = coll.find(); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); }
會輸出mycol集合中所有的文件。
也可以指定查詢的條件,例如:
BasicDBObject query = new BasicDBObject("i", 71); DBCursor cursor = coll.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); }
對於查詢條件中包括$操作符的情形,例如以下一條mongo shell命令:
db.coll.find({i: {$gte: 50}});
可以使用DBObject
生成查詢條件,
// find all where i >= 50 BasicDBObject query = new BasicDBObject("i", new BasicDBObject("$gte", 50)); DBCursor cursor = coll.find(query); try { while (cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); }
七、更新文件
BasicDBObject query = new BasicDBObject("i", 70); BasicDBObject up = new BasicDBObject("$set", new BasicDBObject("i", 100)); coll.update(query, up);
上面的語句將i為70的文件更新i的值等於100。
與我們常用的更新文件的mongo語句一樣,DBCollection
還包含了save
,findAndModify
等更新文件的方法,其使用方法在此不再贅述,可以參考API說明文件即可。
八、刪除文件
可以通過生成一個DBObject
物件來刪除指定的文件,例如:
BasicDBObject query = new BasicDBObject("i", 71); coll.remove(query);
上面的語句刪除i為71的文件。
相關文章
- Java中MongoDB +TestContainerJavaMongoDBAI
- Java中的Atomic包使用指南Java
- Java 8中的Stream API使用指南JavaAPI
- Java Optional使用指南Java
- mongoDB中聚合函式java處理MongoDB函式Java
- Java / JavaScript在TensorFlow中的入門使用指南JavaScript
- Java BigDecimal使用指南JavaDecimal
- java日誌列印使用指南Java
- java修飾符使用指南Java
- Java操作MongoDBJavaMongoDB
- Java專案中MongoDb學習和使用總結JavaMongoDB
- Java8 Stream完全使用指南Java
- LILO使用指南(中)(轉)
- Java 8方法引用使用指南Java
- Android中WebView的使用指南:AndroidWebView
- Android 5.0 中 JobScheduler 使用指南Android
- Linux中mount使用指南(轉)Linux
- Java™ 教程(泛型萬用字元使用指南)Java泛型字元
- 資料庫——MongoDB——>Java篇資料庫MongoDBJava
- mongodb-java-driver基本用法MongoDBJava
- MongoDB中regex用法MongoDB
- MongoDB 中的鎖分析MongoDB
- MongoDB 中的事務MongoDB
- java.util.concurrent 併發包使用指南Java
- Java併發程式設計之CyclicBarrier使用指南Java程式設計
- Java 21 虛擬執行緒:使用指南(一)Java執行緒
- mongodb-java-driver的基本用法MongoDBJava
- MongoDB中的定時索引MongoDB索引
- mongoDB中的冪等性MongoDB
- Hadoop中的Python框架的使用指南HadoopPython框架
- JAVA - mongodb 聚合幾種查詢方式JavaMongoDB
- Using Morphia to map Java objects in MongoDBJavaObjectMongoDB
- MongoDB、Java與物件關係對映MongoDBJava物件
- MongoDB、Java和物件關係對映MongoDBJava物件
- Introduction to MongoDB for Java, PHP and Python DevelopersMongoDBJavaPHPPythonDeveloper
- Java 21 神仙特性:虛擬執行緒使用指南(一)Java執行緒
- Java Profilers探查器使用指南-部落格園文章連結Java
- .Net Core中簡單使用MongoDBMongoDB