首頁 > Java > java教程 > 主體

Java中MongoDB使用指南的程式碼分享

黄舟
發布: 2017-04-01 10:39:15
原創
1553 人瀏覽過

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建構子的為<a href="http://www.php.cn/wiki/1059.html" target="_blank">List</a><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

#1物件作為MongoClient<a href="http://www.php.cn/wiki/60.html" target="_blank">建構函數的參數,完整的認證範例如下:</a><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:java;toolbar:false;">String sURI = String.format(&quot;mongodb://%s:%s@%s:%d/%s&quot;, &quot;user&quot;, &quot;password&quot;, &quot;localhost&quot;, 27017, &quot;mydb&quot;); MongoClientURI uri = new MongoClientURI(sURI); MongoClient mongoClient = new MongoClient(uri); DB db = mongoClient.getDB(&quot;mydb&quot;);</pre><div class="contentsignin">登入後複製</div></div>四、取得一個集合

DBCollection coll = db.getCollection("mycol");
登入後複製

然後可以對指定的集合進行運算,例如,插入,

刪除

,查找,

更新

文件等。 五、插入文件

例如,一個文件以Json來表示如下,

{ “name”: “mongo”, “info”: { “ver”: “3.0” } }
登入後複製

現在需要插入到集合mycol。為了插入到集合中,可以使用

BasicDB

Object建構一個文件。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:java;toolbar:false;">BasicDBObject doc = new BasicDBObject(&quot;name&quot;, &quot;mongo&quot;).append(&quot;info&quot;, new BasicDBObject(&quot;ver&quot;, &quot;3.0&quot;)); coll.insert(doc);</pre><div class="contentsignin">登入後複製</div></div>六、尋找文檔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还包含了savefindAndModify等更新文档的方法,其使用方法在此不再赘述,可以参考API说明文档即可。

八、删除文档

可以通过生成一个DBObject对象来删除指定的文档,例如:

BasicDBObject query = new BasicDBObject("i", 71);
coll.remove(query);
登入後複製

上面的语句删除i为71的文档。

以上是Java中MongoDB使用指南的程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!