摘要:也可以修改查到的所有數(shù)據(jù),如下羅貫中三國(guó)演義刪可以刪除查到的一條數(shù)據(jù),如下羅貫中也可以刪除查到的所有數(shù)據(jù)羅貫中里邊還有其他的查詢條件,都是見(jiàn)名知意,不贅述。
之前我們介紹的MongoDB的操作都是在shell命令中寫的,在項(xiàng)目開(kāi)發(fā)時(shí)我們當(dāng)然都是用程序去操作MongoDB的,本文我們來(lái)看看如何用Java代碼操作MongoDB。
本文是MongoDB系列的第十九篇文章,了解前面的文章有助于更好的理解本文:
1.Linux上安裝MongoDB
2.MongoDB基本操作
3.MongoDB數(shù)據(jù)類型
4.MongoDB文檔更新操作
5.MongoDB文檔查詢操作(一)
6.MongoDB文檔查詢操作(二)
7.MongoDB文檔查詢操作(三)
8.MongoDB查看執(zhí)行計(jì)劃
9.初識(shí)MongoDB中的索引
10.MongoDB中各種類型的索引
11.MongoDB固定集合
12.MongoDB管道操作符(一)
13.MongoDB管道操作符(二)
14.MongoDB中MapReduce使用
15.MongoDB副本集搭建
16.MongoDB副本集配置
17.MongoDB副本集其他細(xì)節(jié)
18.初識(shí)MongoDB分片
首先我們需要驅(qū)動(dòng),MongoDB的Java驅(qū)動(dòng)我們可以直接在Maven中央倉(cāng)庫(kù)去下載,也可以創(chuàng)建Maven工程添加如下依賴:
org.mongodb mongodb-driver 3.5.0
建議通過(guò)Maven來(lái)添加依賴,如果自己下載jar,需要下載如下三個(gè)jar:
1.org.mongodb:bson:jar:3.5.0
2.org.mongodb:mongodb-driver-core:jar:3.5.0
3.org.mongodb:mongodb-driver:jar:3.5.0
另外,在使用Java操作MongoDB之前,記得啟動(dòng)MongoDB哦~
獲取集合所有準(zhǔn)備工作完成之后,我們首先需要一個(gè)MongoClient,如下:
MongoClient client = new MongoClient("192.168.248.136", 27017);
然后通過(guò)如下方式獲取一個(gè)數(shù)據(jù)庫(kù),如果要獲取的數(shù)據(jù)庫(kù)本身就存在,直接獲取到,不存在MongoDB會(huì)自動(dòng)創(chuàng)建:
MongoDatabase sang = client.getDatabase("sang");
然后通過(guò)如下方式獲取一個(gè)名為c1的集合,這個(gè)集合存在的話就直接獲取到,不存在的話MongoDB會(huì)自動(dòng)創(chuàng)建出來(lái),如下:
MongoCollectionc = sang.getCollection("c1");
有了集合之后,我們就可以向集合中插入數(shù)據(jù)了。
增和在shell中的操作一樣,我們可以一條一條的添加數(shù)據(jù),也可以批量添加,添加單條數(shù)據(jù)操作如下:
Document d1 = new Document(); d1.append("name", "三國(guó)演義").append("author", "羅貫中"); c.insertOne(d1);
添加多條數(shù)據(jù)的操作如下:
List改collections = new ArrayList (); Document d1 = new Document(); d1.append("name", "三國(guó)演義").append("author", "羅貫中"); collections.add(d1); Document d2 = new Document(); d2.append("name", "紅樓夢(mèng)").append("author", "曹雪芹"); collections.add(d2); c.insertMany(collections);
可以修改查到的第一條數(shù)據(jù),操作如下:
c.updateOne(Filters.eq("author", "羅貫中"), new Document("$set", new Document("name", "三國(guó)演義123")));
上例中小伙伴們也看到了修改器要如何使用,不管是$set還是$inc,用法都一致,我這里不再一個(gè)一個(gè)演示。也可以修改查到的所有數(shù)據(jù),如下:
c.updateMany(Filters.eq("author", "羅貫中"), new Document("$set", new Document("name", "三國(guó)演義456")));刪
可以刪除查到的一條數(shù)據(jù),如下:
c.deleteOne(Filters.eq("author", "羅貫中"));
也可以刪除查到的所有數(shù)據(jù):
c.deleteMany(Filters.eq("author", "羅貫中"));
Filters里邊還有其他的查詢條件,都是見(jiàn)名知意,不贅述。
查可以直接查詢所有文檔:
FindIterabledocuments = c.find(); MongoCursor iterator = documents.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
也可以按照條件查詢:
FindIterabledocuments = c.find(Filters.eq("author", "羅貫中")); MongoCursor iterator = documents.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
其他的方法基本都是見(jiàn)名知意,這里不再贅述。
驗(yàn)證問(wèn)題上面我們演示的獲取一個(gè)集合是不需要登錄MongoDB數(shù)據(jù)庫(kù)的,如果需要登錄,我們獲取集合的方式改為下面這種:
ServerAddress serverAddress = new ServerAddress("192.168.248.128", 27017); ListcredentialsList = new ArrayList (); MongoCredential mc = MongoCredential.createScramSha1Credential("readuser","sang","123".toCharArray()); credentialsList.add(mc); MongoClient client = new MongoClient(serverAddress,credentialsList); MongoDatabase sang = client.getDatabase("sang"); c = sang.getCollection("c1");
MongoCredential是一個(gè)憑證,第一個(gè)參數(shù)為用戶名,第二個(gè)參數(shù)是要在哪個(gè)數(shù)據(jù)庫(kù)中驗(yàn)證,第三個(gè)參數(shù)是密碼的char數(shù)組,然后將登錄地址封裝成一個(gè)ServerAddress,最后將兩個(gè)參數(shù)都傳入MongoClient中實(shí)現(xiàn)登錄功能。
其他配置在連接數(shù)據(jù)庫(kù)的時(shí)候也可以設(shè)置連接超時(shí)等信息,在MongoClientOptions中設(shè)置即可,設(shè)置方式如下:
ServerAddress serverAddress = new ServerAddress("192.168.248.128", 27017); ListcredentialsList = new ArrayList (); MongoCredential mc = MongoCredential.createScramSha1Credential("rwuser","sang","123".toCharArray()); credentialsList.add(mc); MongoClientOptions options = MongoClientOptions.builder() //設(shè)置連接超時(shí)時(shí)間為10s .connectTimeout(1000*10) //設(shè)置最長(zhǎng)等待時(shí)間為10s .maxWaitTime(1000*10) .build(); MongoClient client = new MongoClient(serverAddress,credentialsList,options); MongoDatabase sang = client.getDatabase("sang"); c = sang.getCollection("c1");
好了,Java操作MongoDB我們就先說(shuō)到這里,小伙伴們有問(wèn)題歡迎留言討論。
參考資料:
1.《MongoDB權(quán)威指南第2版》
更多資料請(qǐng)關(guān)注公眾號(hào):
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/19158.html
摘要:是一個(gè)輕量級(jí)框架,可以完成基于的應(yīng)用程序的大部分配置工作。本文介紹如何使用操作,通過(guò)代碼在里插入數(shù)據(jù)。首先按照這個(gè)教程的第一篇文章的介紹,在本地搭建好的環(huán)境最簡(jiǎn)單的入門教程之一環(huán)境搭建。 Spring Boot 是一個(gè)輕量級(jí)框架,可以完成基于 Spring 的應(yīng)用程序的大部分配置工作。Spring Boot的目的是提供一組工具,以便快速構(gòu)建容易配置的Spring應(yīng)用程序,省去大量傳統(tǒng)S...
摘要:原文保持更新及修正基于的客戶端配置選項(xiàng),其它驅(qū)動(dòng)大同小異。連接池中連接的最大使用壽命毫秒。設(shè)置該選項(xiàng)后,客戶端將進(jìn)行以下行為以副本集模式連接,并根據(jù)給定的服務(wù)器發(fā)現(xiàn)副本集的所有成員。該選項(xiàng)可以和配合使用。編解碼器用于對(duì)進(jìn)行編碼和解碼。 原文保持更新及BUG修正:http://kweny.io/mongodb-clien... 基于 MongoDB Java Driver 3.8.1 ...
摘要:雙刃劍的學(xué)習(xí)和避坑是一把雙刃劍,它對(duì)數(shù)據(jù)結(jié)構(gòu)的要求并不高。第二某些銀行顯示的金額不是實(shí)時(shí)的。第三步創(chuàng)建封裝類的管理類,針對(duì)不同的實(shí)體類,需要配置不同的。 雙刃劍MongoDB的學(xué)習(xí)和避坑 MongoDB 是一把雙刃劍,它對(duì)數(shù)據(jù)結(jié)構(gòu)的要求并不高。數(shù)據(jù)通過(guò)key-value的形式存儲(chǔ),而value的值可以是字符串,也可以是文檔。所以我們?cè)谑褂玫倪^(guò)程中非常方便。正是這種方便給我們埋下了一顆顆...
閱讀 658·2021-11-24 09:39
閱讀 3031·2021-11-23 10:06
閱讀 990·2021-10-08 10:05
閱讀 766·2019-08-30 10:49
閱讀 1738·2019-08-29 14:08
閱讀 1332·2019-08-29 12:48
閱讀 3329·2019-08-26 14:04
閱讀 3623·2019-08-26 13:50