Java 中 MongoDB 使用指南

來源:互聯網
上載者:User

標籤:

一、引入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:[email protected]]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

產生的MongoClientURI對象作為MongoClient建構函式的參數,完整的認證例子如下:

String sURI = String.format("mongodb://%s:%[email protected]%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 >= 50BasicDBObject 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 使用指南

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.