您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)java連接mongodb的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
MongoDB是當(dāng)今非常流行的一款NoSQL數(shù)據(jù)庫,本文介紹如何使用MongoDB的Java驅(qū)動(dòng)來操作MongoDB。
一、引入MongoDB Java Driver包
如果需要操作MongoDB的Java項(xiàng)目是一個(gè)Maven項(xiàng)目,可以在依賴中加上以下的配置。
<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。
詳細(xì)的如何引入MongoDB jar包的方法可以參考官方文檔。
二、連接MongoDB
可以使用MongoClient來連接MongoDB,MongoClient的使用方式如下:
MongoClient mongoClient = new MongoClient("localhost", 27017); DB db = mongoClient.getDB("mydb");
上面的代碼連接了localhost:27017上MongoDB服務(wù),并指定使用mydb數(shù)據(jù)庫。連接后便可以對(duì)這個(gè)數(shù)據(jù)庫作進(jìn)一步的操作。
需要指出的是,MongoClient是線程安全的,可以在多程程環(huán)境中共享同一個(gè)MongoClient。通常來說,一個(gè)應(yīng)用程序中,只需要生成一個(gè)全局的MongoClient實(shí)例,然后在程序的其他地方使用這個(gè)實(shí)例即可。
三、認(rèn)證
可以使用多種方式對(duì)連接進(jìn)行認(rèn)證,下面介紹兩種方式。
1. 方式一:MongoCredential
MongoCredential類的createCredential方法可以指定認(rèn)證的用戶名,密碼,以及使用的數(shù)據(jù)庫,并返回一個(gè)MongoCredential對(duì)象。其方法的聲明如下:
static MongoCredential createCredential( String userName, String database, char[] password)
例如:
MongoCredential credential = MongoCredential.createCredential( "user", "mydb", "password".toCharArray());
上面創(chuàng)建了一個(gè)用戶名為user,密碼為password,數(shù)據(jù)庫為mydb的MongoCredential對(duì)象。
將生成MongoCredential的對(duì)象作為MongoClient構(gòu)造函數(shù)的參數(shù)。由于MongoClient構(gòu)造函數(shù)的為List<MongoCredential>類型,所以需要先構(gòu)造成一個(gè)List再傳遞。
完整的認(rèn)證的例子如下:
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的認(rèn)證,它代表了一個(gè)URI對(duì)象。MongoClientURI的構(gòu)造函數(shù)接受一個(gè)String類型的字符串,這個(gè)字符串的格式如下:
mongodb://[username:password@] host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]
生成的MongoClientURI對(duì)象作為MongoClient構(gòu)造函數(shù)的參數(shù),完整的認(rèn)證例子如下:
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");
四、獲取一個(gè)集合
DBCollection coll = db.getCollection("mycol");
然后可以對(duì)指定的集合進(jìn)行操作,例如,插入,刪除,查找,更新文檔等。
五、插入文檔
例如,一個(gè)文檔以Json來表示如下:
{ “name”: “mongo”, “info”: { “ver”: “3.0” } }
現(xiàn)在需要插入到集合mycol中。為了插入到集合中,可以使用BasicDBObject構(gòu)造一個(gè)文檔。
BasicDBObject doc = new BasicDBObject("name", "mongo").append( "info", new BasicDBObject("ver", "3.0")); coll.insert(doc);
六、查找文檔
1. 通過findOne查找一個(gè)符合條件文檔
通過findOne可以查找一個(gè)符合條件的文檔。例如,對(duì)于上面的mycol集合,執(zhí)行以下命令:
DBObject myDoc = coll.findOne(); System.out.println(myDoc);
將輸出mycol集合中的第一個(gè)文檔。也可以通過指定findOne的查找參數(shù),來查找符合查找條件的一個(gè)文檔。
2. 通過find查找所有符合條件的文檔
find用來查找符合條件的文檔,它返回一個(gè)DBCursor對(duì)象,通過遍歷DBCursor對(duì)象,可以獲得所有符合查找條件的文檔。
為了說明和測(cè)試,我們先插入一批以下格式的文檔
{ “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(); }
會(huì)輸出mycol集合中所有的文檔。
也可以指定查找的條件,例如:
BasicDBObject query = new BasicDBObject("i", 71); DBCursor cursor = coll.find(query); try { while(cursor.hasNext()) { System.out.println(cursor.next()); } } finally { cursor.close(); }
對(duì)于查找條件中包括$操作符的情形,例如以下一條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說明文檔即可。
八、刪除文檔
可以通過生成一個(gè)DBObject對(duì)象來刪除指定的文檔,例如:
BasicDBObject query = new BasicDBObject("i", 71); coll.remove(query);
上面的語句刪除i為71的文檔。
關(guān)于java連接mongodb的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。