日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

java 连nosql_浅谈 Java 中 MongoDB NoSQL数据库使用指南

發(fā)布時(shí)間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 连nosql_浅谈 Java 中 MongoDB NoSQL数据库使用指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MongoDB是當(dāng)今非常流行的一款NoSQL數(shù)據(jù)庫(kù),本文介紹如何使用MongoDB的Java驅(qū)動(dòng)來(lái)操作MongoDB。

一、引入MongoDB Java Driver包

如果需要操作MongoDB的Java項(xiàng)目是一個(gè)Maven項(xiàng)目,可以在依賴中加上以下的配置。

org.mongodb

mongo-java-driver

2.13.2

或者通過(guò)直接下載jar包的方式使用,下載地址:mongo-java-driver-2.13.2.jar。

詳細(xì)的如何引入MongoDB jar包的方法可以參考官方文檔。

二、連接MongoDB

可以使用MongoClient來(lái)連接MongoDB,MongoClient的使用方式如下:

MongoClient mongoClient = new MongoClient("localhost", 27017);

DB db = mongoClient.getDB("mydb");

上面的代碼連接了localhost:27017上MongoDB服務(wù),并指定使用mydb數(shù)據(jù)庫(kù)。連接后便可以對(duì)這個(gè)數(shù)據(jù)庫(kù)作進(jìn)一步的操作。

需要指出的是,MongoClient是線程安全的,可以在多程程環(huán)境中共享同一個(gè)MongoClient。通常來(lái)說(shuō),一個(gè)應(yīng)用程序中,只需要生成一個(gè)全局的MongoClient實(shí)例,然后在程序的其他地方使用這個(gè)實(shí)例即可。

三、認(rèn)證

可以使用多種方式對(duì)連接進(jìn)行認(rèn)證,下面介紹兩種方式。

1. 方式一:MongoCredential

MongoCredential類的createCredential方法可以指定認(rèn)證的用戶名,密碼,以及使用的數(shù)據(jù)庫(kù),并返回一個(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ù)庫(kù)為mydb的MongoCredential對(duì)象。

將生成MongoCredential的對(duì)象作為MongoClient構(gòu)造函數(shù)的參數(shù)。由于MongoClient構(gòu)造函數(shù)的為L(zhǎng)ist類型,所以需要先構(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");

方式二: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來(lái)表示如下,

{ “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. 通過(guò)findOne查找一個(gè)符合條件文檔

通過(guò)findOne可以查找一個(gè)符合條件的文檔。例如,對(duì)于上面的mycol集合,執(zhí)行以下命令:

DBObject myDoc = coll.findOne();

System.out.println(myDoc);

將輸出mycol集合中的第一個(gè)文檔。也可以通過(guò)指定findOne的查找參數(shù),來(lái)查找符合查找條件的一個(gè)文檔。

2. 通過(guò)find查找所有符合條件的文檔

find用來(lái)查找符合條件的文檔,它返回一個(gè)DBCursor對(duì)象,通過(guò)遍歷DBCursor對(duì)象,可以獲得所有符合查找條件的文檔。

為了說(shuō)明和測(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);

上面的語(yǔ)句將i為70的文檔更新i的值等于100。

與我們常用的更新文檔的mongo語(yǔ)句一樣,DBCollection還包含了save,findAndModify等更新文檔的方法,其使用方法在此不再贅述,可以參考API說(shuō)明文檔即可。

八、刪除文檔

可以通過(guò)生成一個(gè)DBObject對(duì)象來(lái)刪除指定的文檔,例如:

BasicDBObject query = new BasicDBObject("i", 71);

coll.remove(query);

上面的語(yǔ)句刪除i為71的文檔。

總結(jié)

以上是生活随笔為你收集整理的java 连nosql_浅谈 Java 中 MongoDB NoSQL数据库使用指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。