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