免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
MongoDB的java版本驅(qū)動(dòng)

(1)建立連接

建立一個(gè)mongodb的連接,至少應(yīng)該知道數(shù)據(jù)庫(kù)實(shí)例的名稱(chēng)(不一定存在。如果不存在,會(huì)創(chuàng)建一個(gè)新的)

此外,可以指定mongodb服務(wù)器的ip和端口,下面的代碼展現(xiàn)了三種不同的連接方式連接到mydb的數(shù)據(jù)庫(kù)實(shí)例上

import com.mongodb.MongoClient;import com.mongodb.MongoException;import com.mongodb.WriteConcern;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.BasicDBObject;import com.mongodb.DBObject;import com.mongodb.DBCursor;import com.mongodb.ServerAddress;import java.util.Arrays;// 方式一:直接連接單一mongodb服務(wù)器(注意這種方式不會(huì)自動(dòng)發(fā)現(xiàn)mongodb集群中的主服務(wù)器)MongoClient mongoClient = new MongoClient();// 方式二(指定ip):MongoClient mongoClient = new MongoClient( "localhost" );// 方式二(指定ip、端口):MongoClient mongoClient = new MongoClient( "localhost" , 27017 );// 方式三:連接到mongodb服務(wù)器集群(會(huì)自動(dòng)發(fā)現(xiàn)主服務(wù)器)MongoClient mongoClient = new MongoClient(Arrays.asList(new ServerAddress("localhost", 27017),                                      new ServerAddress("localhost", 27018),                                      new ServerAddress("localhost", 27019)));DB db = mongoClient.getDB( "mydb" );

在上面的代碼中,db代表了連接mongodb中的mydb數(shù)據(jù)庫(kù)實(shí)例的連接。通過(guò)它,可以進(jìn)行進(jìn)一步的操作。

注:MongoClient的實(shí)例代表數(shù)據(jù)庫(kù)連接池,客戶端在多線程環(huán)境下也只需要一個(gè)實(shí)例,請(qǐng)?jiān)L問(wèn)http://docs.mongodb.org/ecosystem/drivers/java-concurrency/#java-driver-concurrency獲取更多信息

MongoClient被設(shè)計(jì)成線程安全、可以被多線程共享的。通常訪問(wèn)數(shù)據(jù)庫(kù)集群的應(yīng)用只需要一個(gè)實(shí)例。如果出于某些原因,你決定使用多個(gè)實(shí)例,請(qǐng)注意:

所有資源使用限制(最大連接數(shù)等等)對(duì)每個(gè)MongoClient都適用

銷(xiāo)毀一個(gè)實(shí)例時(shí),請(qǐng)確認(rèn)調(diào)用MongoClient.close()方法來(lái)清理資源

MongoClient類(lèi)最早從2.10.0版本引入,先前的版本請(qǐng)使用Mongo類(lèi)

注:mongodb安裝、啟動(dòng)可以參考http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html

(2)認(rèn)證(可選)

MongoDB可以運(yùn)行在安全模式上。當(dāng)運(yùn)行在這個(gè)模式下時(shí),任何客戶端應(yīng)用在執(zhí)行任何操作前必須提供用戶名、密碼。java客戶端示例代碼如下:

MongoClient mongoClient = new MongoClient();DB db = mongoClient.getDB("test");boolean auth = db.authenticate(myUserName, myPassword);
在上面的代碼中,如果用戶名密碼通過(guò)校驗(yàn),auth==true,否則auth=false。也可以查詢mongodb的日志。

(3)獲取所有集合(集合類(lèi)似于mysql中的表)

每個(gè)數(shù)據(jù)庫(kù)實(shí)例有0個(gè)或者多個(gè)集合,通過(guò)db可以獲取到。

Set<String> colls = db.getCollectionNames();for (String s : colls) {    System.out.println(s);}

如果數(shù)據(jù)庫(kù)中存在name、address兩個(gè)集合,會(huì)有如下輸出:

nameaddress

(4)獲取單一集合

調(diào)用db的getCollection(String collectionName)方法獲得單一集合

DBCollection coll = db.getCollection("testCollection");

獲取到集合對(duì)象后,就可以進(jìn)行添加、查詢數(shù)據(jù)等操作。

(5)設(shè)置 write concern

2.10.0及以后版本,默認(rèn)的write concern是WriteConcern.ACKNOWLEDGED??梢愿淖兡J(rèn)模式:

mongoClient.setWriteConcern(WriteConcern.JOURNALED);

write concern有很多選項(xiàng)。另外,默認(rèn)模式可以在數(shù)據(jù)庫(kù)級(jí)別、集合級(jí)別甚至是單一操作級(jí)別進(jìn)行更改。具體信息請(qǐng)查閱API文檔http://api.mongodb.org/java/current/index.html

2.10.0以前的版本,默認(rèn)值是WriteConcern.NORMAL。一般情況,客戶端會(huì)改變這個(gè)值來(lái)保證寫(xiě)入數(shù)據(jù)庫(kù)如果有問(wèn)題可以被通知到。

(6)增加文檔(類(lèi)似向數(shù)據(jù)庫(kù)中增加一條記錄)

一旦獲取集合對(duì)象coll,就可以插入一條文檔了。例如:插入下面json格式的文檔

{   "name" : "MongoDB",   "type" : "database",   "count" : 1,   "info" : {               x : 203,               y : 102             }}

注意上面存在嵌入的文檔。我們可以使用BasicDBObject類(lèi)創(chuàng)建一個(gè)文檔(包括嵌入的文檔)。然后調(diào)用集合coll的插入方法

BasicDBObject doc = new BasicDBObject("name", "MongoDB").                              append("type", "database").                              append("count", 1).                              append("info", new BasicDBObject("x", 203).append("y", 102));coll.insert(doc);

(7)findOne()方法:查找集合中的第一個(gè)文檔

通過(guò)調(diào)用findOne()方法可以獲得上一步中我們插入的文檔。方法的返回值返回一個(gè)單一的文檔(與DBCurse的find()方法不同)。當(dāng)只存在唯一文檔或者只關(guān)心第一個(gè)文檔時(shí)非常有用。

DBObject myDoc = coll.findOne();System.out.println(myDoc);

控制臺(tái)輸出如下:

{ "_id" : "49902cde5162504500b45c2c" ,  "name" : "MongoDB" ,  "type" : "database" ,  "count" : 1 ,  "info" : { "x" : 203 , "y" : 102}}
注意:_id元素是mongodb自動(dòng)添加的。請(qǐng)牢記:_"/“$是mongodb的保留字,請(qǐng)勿使用。

(8)添加多條文檔

為了方便以后的查詢操作,現(xiàn)在向集合中增加多條文檔

這些文檔的格式為:

{   "i" : value}
通過(guò)一個(gè)循環(huán)添加文檔,具體如下:

for (int i=0; i < 100; i++) {    coll.insert(new BasicDBObject("i", i));}

注意我們可以向一個(gè)集合插入不同格式的文檔。這就是mongodb模式自由的特性

(8)查詢集合中文檔總個(gè)數(shù)

目前,已經(jīng)向集合中插入101條文檔(100條是通過(guò)循環(huán)添加的,1條是單獨(dú)添加的)。可以調(diào)用getCount()方法查詢總個(gè)數(shù)

System.out.println(coll.getCount());

控制臺(tái)應(yīng)該輸出101

(9)使用游標(biāo)查詢所有文檔

可以使用find()方法查詢集合中的所有文檔。方法返回一個(gè)DBCursor。這個(gè)對(duì)象可以遍歷查詢出的文檔集合。下面是查詢所有文檔并且輸出到控制臺(tái)的代碼片段

DBCursor cursor = coll.find();try {   while(cursor.hasNext()) {       System.out.println(cursor.next());   }} finally {   cursor.close();}
控制臺(tái)應(yīng)該輸出101行文檔信息。

(10)查詢單一文檔

通過(guò)向find()方法傳遞參數(shù)可以查詢到集合的一部分文檔集合。例如:查找i==71的文檔的代碼片段如下:

BasicDBObject query = new BasicDBObject("i", 71);cursor = coll.find(query);try {   while(cursor.hasNext()) {       System.out.println(cursor.next());   }} finally {   cursor.close();}

控制臺(tái)應(yīng)該只輸出一行:

{ "_id" : "49903677516250c1008d624e" , "i" : 71 }

也許你在mongodb的文檔和示例代碼中看到過(guò)$操作符,例如:

db.things.find({j: {$ne: 3}, k: {$gt: 10} });

Java版本的客戶端將無(wú)區(qū)別的對(duì)待他們

BasicDBObject query = new BasicDBObject("j", new BasicDBObject("$ne", 3)).                                      append("k", new BasicDBObject("$gt", 10));cursor = coll.find(query);try {   while(cursor.hasNext()) {       System.out.println(cursor.next());   }} finally {   cursor.close();}

(11)查詢多個(gè)文檔

通過(guò)查詢可以獲取集合中的多個(gè)文檔。例如:查詢i>50的文檔:

query = new BasicDBObject("i", new BasicDBObject("$gt", 50));  // e.g. find all where i > 50cursor = coll.find(query);try {   while(cursor.hasNext()) {       System.out.println(cursor.next());   }} finally {   cursor.close();}

控制臺(tái)應(yīng)該打印出i>50的所有文檔

查詢20<i<=30的文檔:

query = new BasicDBObject("i", new BasicDBObject("$gt", 20).                                               append("$lte", 30));  // i.e.   20 < i <= 30cursor = coll.find(query);try {   while(cursor.hasNext()) {       System.out.println(cursor.next());   }} finally {   cursor.close();}

一些管理相關(guān)的功能如下:

(12)創(chuàng)建索引

mongodb支持索引并且添加到集合中也非常方便。創(chuàng)建一個(gè)索引,需要指定被索引的字段以及索引方向(1代表升序、2代表降序)。

為字段i添加索引:

coll.createIndex(new BasicDBObject("i", 1));  // create index on "i", 升序

(13)查詢集合上的索引

示例代碼:

List<DBObject> list = coll.getIndexInfo();for (DBObject o : list) {   System.out.println(o);}

控制臺(tái)應(yīng)該輸出:

{ "name" : "i_1" , "ns" : "mydb.testCollection" , "key" : { "i" : 1} }

(14)查詢所有數(shù)據(jù)庫(kù)實(shí)例名稱(chēng)

示例代碼如下:

MongoClient mongoClient = new MongoClient();for (String s : mongoClient.getDatabaseNames()) {   System.out.println(s);}

(15)刪除數(shù)據(jù)庫(kù)實(shí)例

示例代碼如下:

MongoClient mongoClient = new MongoClient();mongoClient.dropDatabase("myDatabase");

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MongoDB Java | 菜鳥(niǎo)教程
用mongodb 的java開(kāi)發(fā)包
MongoDB入門(mén)簡(jiǎn)介
mongoDB入門(mén)必讀(概念與實(shí)戰(zhàn)并重)
The cursor option is required, except for aggregat...
MongoDB Java異步驅(qū)動(dòng)快速指南
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服