1. 程式人生 > >Java操作MongoDB資料庫CRUD(增刪查改)

Java操作MongoDB資料庫CRUD(增刪查改)

Java操作MongoDB資料庫CRUD(增刪查改)

藉助mongo-java-driver包,對MongoDB資料庫的集合(DataTable)及文件(BSON物件資料)進行增刪查改操作。本文的核心在於查詢操作,善用mongo-java-driver包下的Iterable迭代器、fing()方法、aggregate()方法,理解Document物件對映BSON物件的底層實現,可完成類似視窗命令列下javascript程式碼操作MongoDB資料庫的所有查詢。

1. 環境搭建

1.1 建立專案

本文是在Idea編輯器Maven環境下建立quickstart專案。

1.2 新增依賴

引入junit測試單元,可方便測試程式碼;
引入MongoDB驅動包,3.9.1版本;

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
      <!--MongoDB-->
    <
dependency
>
<groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.9.1</version> </dependency>

2. 測試環境搭建

2.1 封裝MongoDBUtil工具類

此步驟略過,該工具類需具備連線池引數資訊的配置,獲取MongClient物件及關閉mongoClient功能。

2.2 準備junit測試程式碼,並測試連線

ongoClient mongoClient = null;

@Before
public void testInit() {
    // 獲取連線
    mongoClient = MongoDBUtil.getMongoClient();
}

@After
public void testClose() {
    MongoDBUtil.close(mongoClient);
}

@Test
public void testDB() {
    // 連線資料庫,存在選中,不存在建立
    MongoDatabase db = mongoClient.getDatabase("myDB");

    // 刪除資料庫
    mongoClient.dropDatabase("myDB");
}

3. 資料庫CRUD(增刪查改)操作

3.1 建立集合

集合既是關係型資料庫的表。

 	@Test
    public void testCreate(){
        //1.’連線資料庫,若存在即選中,若不存在就建立
        MongoDatabase mongoDatabase  = mongoClient.getDatabase("javadb");
        //建立集合,此步驟若建立已存在集合,將會報錯
        //mongoDatabase.createCollection("javaTset");
        
        //2.獲取集合,若存在即選中,若不存在就建立
        MongoCollection mongoCollection = mongoDatabase.getCollection("javaTset");
        
        //3.獲取集合中文件個數
        Long collectionSize = mongoCollection.countDocuments();
        System.out.println("javadb集合中文件個數:"+collectionSize);

        //3.獲取整個資料庫下集合名稱列表
        MongoIterable<String> mongoIterable = mongoDatabase.listCollectionNames();
        //4.獲取迭代器,並遍歷
        MongoCursor<String> mongoCursor = mongoIterable.iterator();
        while(mongoCursor.hasNext()){
            System.out.println(mongoCursor.next());
        }
        mongoCursor.close();

        //5.刪除當前集合
        mongoCollection.drop();
    }

結果:

javadb集合中文件個數:5
emp
javadb
user

3.2 建立文件

文件既是關係型資料庫的row,java程式碼中由Document(鍵值對形式,鍵為字串,值可以為字串、數字、Document物件)物件體現,很好的對應了MongoDB中的Bson物件。

    @Test
    public void testCrud01(){
        //連線資料庫,存在選中,不存在就建立
        MongoDatabase database  = mongoClient.getDatabase("javadb");
        //獲取集合
        MongoCollection collection = database.getCollection("javaTest");
        //插入一條文件
        Document document = new Document();
        document.put("name","zhangsan123");
        document.put("age",11);
        document.put("addr","shanghai");
        document.put("date",new Date());
        collection.insertOne(document);
		 //插入多條文件
        Document document1 = new Document();
        document1.put("name","lisi");
        document1.put("age",11);
        document1.put("addr","beijing");
        document1.put("date",new Date());
        Document document2 = new Document();
        document2.put("name","wangwu");
        document2.put("age",55);
        document2.put("addr","guangzhou");
        document2.put("date",new Date());
        List<Document> list = new ArrayList<>();
        list.add(document1);
        list.add(document2);

        collection.insertMany(list);

        //查詢所有文件,獲取迭代器和遊標,並遍歷
        MongoCursor<Document> cursor = collection.find().iterator();
        while (cursor.hasNext()){
            System.out.println(cursor.next().toString());
        }
        cursor.close();
    }

結果:

Document{{_id=5c024316b4d5c01d14924040, name=zhangsan123, age=11, addr=shanghai, date=Sat Dec 01 16:15:18 CST 2018}}
Document{{_id=5c024317b4d5c01d14924041, name=lisi, age=11, addr=beijing, date=Sat Dec 01 16:15:19 CST 2018}}
Document{{_id=5c024317b4d5c01d14924042, name=wangwu, age=55, addr=guangzhou, date=Sat Dec 01 16:15:19 CST 2018}}

3.3 更新文件

    @Test
    public void testCrud03(){
        //連線資料庫,存在選中,不存在就建立
        MongoDatabase database  = mongoClient.getDatabase("javadb");
        //獲取集合
        MongoCollection collection = database.getCollection("javaTest");
        /**
         * 更新操作
         */
        //1.獲取到要更新的文件
        BasicDBObject old = new BasicDBObject();
        old.put("name","lisi");
        //2.建立更新的文件(需要跟新的欄位和值)
        BasicDBObject newObj = new BasicDBObject();
        newObj.put("age",22);
        //3.建立更新操作
        BasicDBObject update = new BasicDBObject("$set",newObj);
        //4.執行更新
        collection.updateOne(old,update);//更新匹配的第一條資料
        //collection.updateMany(old,update);//更新多條資料
    }

3.4 刪除文件

    @Test
    public void testCrud04() {
        //連線資料庫,存在選中,不存在就建立
        MongoDatabase database = mongoClient.getDatabase("javadb");
        //獲取集合
        MongoCollection collection = database.getCollection("javaTest");
        /**
         * 刪除文件
         */
        BasicDBObject obj = new BasicDBObject();
        obj.put("name","wangwu");
        collection.deleteOne(obj);
    }

3.5 查詢文件

查詢之前需要在MongoDB資料庫中新建兩個查詢源:user、emp,初始化JavaScript程式碼如下:
//user表
user1 = { "_id":1, "name":"zhangsan","age":1, "hobbies":["music", "read"],"addr":{ "country":"China","city":"BJ" }}
user2 = { "_id":2,"name":"lisi","age":2, "hobbies":["music", "read"],"addr":{"country":"China", "city":"SH"}}
user3 = { "_id":3, "name":"wangwu","age":3,"hobbies":["music", "read"],"addr":{"country":"China","city":"GZ"}}
user4 = {"_id":4,"name":"zhaoliu","age":4,"hobbies":["music", "read"],"addr":{ "country":"China","city":"SZ"}}
user5 = {"_id":5,"name":"tianqi","age":5,"hobbies":["music", "read"],"addr":{"country":"China","city":"TY"}}
db.user.insertMany([user1, user2, user3, user4, user5])
// emp表,練習Aggregate語法,先插入如下資料:

emp1 = {"_id":1,"name":"武大郎","sex":"male","age":18,"hire_date":"20170301","post":"燒餅檢察官","salary":7300.33}
emp2 = {"_id":2,"name":"武松","sex":"male","age":78,"hire_date":"20150302","post":"公務員","salary":71000000.31}
emp3 = {"_id":3,"name":"宋江","sex":"male","age":81,"hire_date":"20130305","post":"公務員","salary":78300}
emp4 = {"_id":4,"name":"林沖","sex":"male","age":73,"hire_date":"20140701","post":"公務員","salary":73500}
emp5 = {"_id":5,"name":"林沖","sex":"male","age":73,"hire_date":"20140701","post":"公務員","salary":73500}
emp6 = {"_id":6,"name":"柴進","sex":"male","age":28,"hire_date":"20121101","post":"公務員","salary":72100}
emp7 = {"_id":7,"name":"盧俊義","sex":"female","age":18,"hire_date":"20110211","post":"公務員","salary":79000}
emp8 = {"_id":8,"name":"高俅","sex":"male","age":18,"hire_date":"19000301","post":"公務員","salary":730000}
emp9 = {"_id":9,"name":"魯智深","sex":"male","age":48,"hire_date":"20101111","post":"公務員","salary":710000}
emp10 = {"_id":10,"name":"史進","sex":"female","age":48,"hire_date":"20150311","post":"打手","salary":73000.13}
emp11 = {"_id":11,"name":"李逵","sex":"female","age":38,"hire_date":"20101101","post":"打手","salary":72000.35}
emp12 = {"_id":12,"name":"周通","sex":"female","age":18,"hire_date":"20110312","post":"打手","salary":71000.37}
emp13 = {"_id":13,"name":"石秀","sex":"female","age":18,"hire_date":"20160513","post":"打手","salary":73000.29}
emp14 = {"_id":14,"name":"李忠","sex":"female","age":28,"hire_date":"20170127","post":"打手","salary":74000.33}
emp15 = {"_id":15,"name":"吳用","sex":"male","age":28,"hire_date":"20160311","post":"文人","salary":710000.13}
emp16 = {"_id":16,"name":"蕭讓","sex":"male","age":18,"hire_date":"19970312","post":"文人","salary":720000}
emp17 = {"_id":17,"name":"安道全","sex":"female","age":18,"hire_date":"20130311","post":"文人","salary":719000}
emp18 = {"_id":18,"name":"公孫勝","sex":"male","age":18,"hire_date":"20150411","post":"文人","salary":718000}
emp19 = {"_id":19,"name":"朱貴","sex":"female","age":18,"hire_date":"20140512","post":"文人","salary":717000}
db.emp.insertMany([emp1, emp2, emp3, emp4, emp5, emp6, emp7, emp8, emp9, emp10, emp11, emp12, emp13, emp14, emp15, emp16, emp17, emp18, emp19])
條件查詢1:匹配查詢
    @Test
    public void testCrud01(){
        //連線資料庫,存在選中,不存在就建立
        MongoDatabase database  = mongoClient.getDatabase("javadb");
        //獲取集合
        MongoCollection collection = database.getCollection("user");
        /**
         * 條件查詢1
         * 單一欄位匹配查詢
         */
        BasicDBObject obj = new BasicDBObject();
        obj.put("name","lisi");
        MongoCursor<Document> docs = collection.find(obj).iterator();
        while (docs.hasNext()){
            System.out.println(docs.next().toString());
        }
        docs.close();
    }

結果:

Document{{_id=6.0, name=lisi, age=42.0, hobbies=[music, read], addr=Document{{country=China, city=SH}}}}
條件查詢2:比較、邏輯、投影、排序等查詢
    @Test
    public void testCrud02(){
        //連線資料庫,存在選中,不存在就建立
        MongoDatabase database  = mongoClient.getDatabase("javadb");
        //獲取集合
        MongoCollection<Document> collection = database.getCollection("user");
        /**
         * 條件查詢2
         */
        System.out.println("查詢條件_id==6.0 **************************************");
        FindIterable
            
           

相關推薦

Java操作MongoDB資料庫CRUD增刪

Java操作MongoDB資料庫CRUD(增刪查改) 藉助mongo-java-driver包,對MongoDB資料庫的集合(DataTable)及文件(BSON物件資料)進行增刪查改操作。本文的核心在於查詢操作,善用mongo-java-driver包下的Iterable迭代器、fin

在SpringBoot下用java操作MongoDB資料庫的增刪改

首先我們需要建立一個SpringBoot工程,在IDEA中有快捷的建立方式。new -> project -> Spring Initializr 根據需要一路next下去即可第二步,給application.properties新增MongoDB配置#Mongo

C語言操作mysql範例增刪

    C程式碼的API是隨MySQL一起釋出的. 它包含在mysqlclient庫中, 可以使C程式來訪問資料庫.     MySQL原始碼包中的許多客戶端都是用C寫的. 如果你正在找使用這些C API的例子, 可以看看客戶端的寫法.你可以在MySQL原始碼包的clie

C語言對位進行操作增刪

利用移位運算、位與、位或,可以查詢、修改某一bit的值。程式如下 #define uchar unsigned char /*測試變數某一位是否為‘1’,是返回真,否返回假,num為待測試的數,bit為位數,其值從0到7,下同*/ uchar bittest(uchar

go語言操作mysql範例增刪

    go官方僅提供了database package,database package下有兩個包sql,sql/driver。這兩個包用來定義操作資料庫的介面,這就保證了無論使用哪種資料庫,他們的操作方式都是相同的。     但go官方並沒有提供連線資料庫的drive

MySQL學習筆記1增刪

nbsp 之間 values 自動 mon name mes 函數 mar 創建表: /* 創建數據庫 create database 數據庫名; */ CREATE DATABASE mybase; /* 使用數據庫 use 數據庫名 */ US

SQLite.swift —— 例項教程增刪Swift 3

本文介紹下SQLite.swift的基本使用方法,包括與資料庫建立連線、建表、增、刪、查、改,以上基本用法。文中程式碼都是從當前專案中直接粘下來的,並不能直接執行,但是核心的東西都在了。 這個是SQLite.swift的網址,裡面有簡單的介紹(貼上複製到位址列):

python中操作mysql資料庫CRUD增刪改

python高階應用與資料分析學習筆記 05 1、mysql的安裝 安裝成功是這樣子的 2、pymysql的安裝 一如既往的使用Ancoda來安裝python軟體,

Django下mysql資料庫的相關操作建立資料表、以及增刪

如有疑惑或錯誤之處可評論或郵箱聯絡博主:[email protected] 本文主要記錄了在django下使用mysql資料庫時的相關操作,包括建立資料庫、資料表、以及增刪查改。 博主開發環境:Ubuntu16.04,python2.7,d

Java操作MongoDB資料庫方法詳解

Java與 mongodb 的連線 連單臺mongodb Mongo mg = new Mongo();//預設連本機127.0.0.1 埠為27017 Mongo mg = new Mongo(ip);//可以指定ip 埠預設為27017 Mongo

java操作MongoDB資料庫

1、如何啟動MongoDB資料庫?如圖所示:安裝好MongoDB之後,資料夾顯示如下:MongoDB預設開啟27017埠,開啟瀏覽器,輸入http://localhost:27017/,顯示如下:啟動資

java操作mongoDB資料庫的簡單例項

")); //  mongoDb.update(new BasicDBObject(), //    update,false,true,"javadb");   /**    * 7.查詢出persons集合中的name和age    */ //  DBObject keys = new BasicDBOb

使用 mongoose 操作 MongoDB 資料庫之 增刪改

一、前言 CRUD ①正如Java語言裡邊使用JDBC操作MySQL,JavaScript則使用Node.js操作資料庫, ②而Java操作資料一般不用原生的JDBC程式碼,包裝好JDBC的框架提供了眾多的選擇,如DbUtils,Spring的JDBCTe

資料庫——MySQL增刪、去重,分頁、模糊查詢、排序

新增所有列的記錄:●  語法:insert  into  表名稱  values (值1,值2,值3,...值n);●  例子:insert  into  user  values(‘張三’,‘演員’,22,‘男’);注意:必須把所有列都進行新增,並且新增值的順序需要與建表時

Elasticearch JAVA API 高級客戶端 增刪操作

socket ESS lean rst arc 時間設置 def ray try Elasticearch高級客戶端MAVEN 依賴:版本請自行對應自己的ELasticearch數據庫的版本 <dependency> <groupI

HDFS Java Client對hdfs文件增刪

apache pom.xml onf != open readline inpu test .get step1:增加依賴 pom.xml ... <!-- https://mvnrepository.com/artifact/org

XML —— Java 操作 XML 工具包 JDOM&DOM4J

1. JDOM 引入 JDOM 是一種使用 XML(標準通用標記語言下的一個子集) 的獨特 Java 工具包,用於快速開發 XML 應用 程式。 集合DOM 和 SAX 的優點 需要引入jar包 JDOM 官方網站:http://www.jdom.org/ 小缺陷:

jfinal+hbase+eclipse開發web專案詳細步驟04---在web頁面實現對hbase資料庫資料的增刪功能

首先提醒大家,本節是在步驟01、步驟02、步驟03都成功的基礎上做進一步開發。如果在之前的任何一個步驟出現問題,那麼希望你先解決好問題之後,再做本次的開發。 步驟1:建表。 1、開啟我們虛擬機器,並且啟動hadoop、hbase start-all.sh start

使用註解自動解釋orm,從而實現無xml配置的jdbc泛型介面dao,對資料庫單表增刪

一、獲取資料庫連線和關閉資源 package cn.itdoer.base.utils.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepa

java操作word文件jacob,poi

專案需要,使用者從系統裡面下載word文件,該文件進行了填寫限制和加密,使用者只能在固定位置填寫內容。現要求系統驗證上傳的附件是否從系統上下載下來的。 思路:系統上面的文件都加入一個固定書籤,使用者上傳文件的時候,檢驗文件裡是否包含這個書籤。 採用jacob