Java MongoDB數(shù)據(jù)庫(kù)連接方法梳理
前言
本節(jié)將介紹如何設(shè)置和使用MongoDB 驅(qū)動(dòng)程序,通過(guò) java實(shí)現(xiàn)與MongoDB服務(wù)端的通信功能,用戶可以在此基礎(chǔ)上進(jìn)行各種Java程序的開(kāi)發(fā),例如最基本的增刪改查操作。
一、MongoDB簡(jiǎn)介
通過(guò)啟動(dòng)mongo進(jìn)程如Shell環(huán)境訪問(wèn)數(shù)據(jù)庫(kù)外,MongoDB還提供了其他基于編程語(yǔ)言的訪問(wèn)數(shù)據(jù)庫(kù)方法。MongoDB官方提供了Java和Python語(yǔ)言的驅(qū)動(dòng)包,利用這些驅(qū)動(dòng)包可使用多種編程方法來(lái)連接并操作MongoDB數(shù)據(jù)庫(kù)。本篇文章重點(diǎn)講解java語(yǔ)言的連接方式。
特點(diǎn)
- JSON結(jié)構(gòu)和對(duì)象模型接近,開(kāi)發(fā)代碼量低
- JSON的動(dòng)態(tài)模型意味著更容易響應(yīng)新的業(yè)務(wù)需求
- 復(fù)制集提供99.999%高可用
- 分片架構(gòu)支持海量數(shù)據(jù)和無(wú)縫擴(kuò)容
缺點(diǎn)
- MongoDB 不支持事務(wù)
- MongoDB 不能進(jìn)行多表聯(lián)查
MongoDB 應(yīng)用場(chǎng)景
1.社交場(chǎng)景,比如朋友圈,附近的人的地點(diǎn)的存儲(chǔ)
2.游戲場(chǎng)景,比如用戶當(dāng)前裝備,得分等
3.物流場(chǎng)景,比如快遞的位置,狀態(tài),途徑
4.視頻場(chǎng)景,比如直播中的點(diǎn)贊數(shù)和互動(dòng)留言等
二、連接MongoDB前的準(zhǔn)備工作
下載
MongoDB官網(wǎng):MongoDB Community Download | MongoDB
Studio 3T官網(wǎng):The Professional Client, IDE and GUI for MongoDB | Studio 3T
eclipse官網(wǎng):Eclipse Downloads | The Eclipse Foundation
創(chuàng)建工程并且導(dǎo)入jar包

idea則在pom.xml中導(dǎo)入坐標(biāo)
<!-- mongodb鏈接驅(qū)動(dòng) --> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>3.6.4</version> </dependency> <!-- Google Gson --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.2</version> </dependency>
java連接MongoDB數(shù)據(jù)庫(kù)
public class Test01 {
public static void main(String[] args) {
//查找
//獲取對(duì)象
MongoClient mc =new MongoClient("localhost",27017);
//打印
System.out.println(mc);
//獲取庫(kù)對(duì)象
MongoDatabase db = mc.getDatabase("myschoolxxx");
//獲取庫(kù)中表的集合
MongoIterable<String> iterable = db.listCollectionNames();
MongoCursor<String> iterator = iterable.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
System.out.println("wod");
}
mc.close();
}
}
增加數(shù)據(jù)
package com.ape.conn;
import java.util.Date;
import org.bson.Document;
import com.ape.bean.Student;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
public class Insert {
public static void main(String[] args) {
//獲取對(duì)象
MongoClient mc =new MongoClient("localhost",27017);
//獲取庫(kù)對(duì)象
MongoDatabase db = mc.getDatabase("myschoolxxx");
//獲取表對(duì)象
MongoCollection<Document> student = db.getCollection("student");
//創(chuàng)建學(xué)生對(duì)象
Student s = new Student();
s.setSid(6);
s.setSname("趙六");
s.setBirthday(new Date());
s.setSsex("女");
s.setClassid(20);
//創(chuàng)建愛(ài)你一個(gè)document獨(dú)享
Document doc = new Document();
//存入數(shù)據(jù)
doc.put("sid", s.getSid());
doc.put("sname", s.getSname());
doc.put("birhday", s.getBirthday());
doc.put("ssex", s.getSsex());
doc.put("classid", s.getClassid());
student.insertOne(doc);
//釋放資源
mc.close();
}
}
修改數(shù)據(jù)

package com.ape.conn;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.UpdateResult;
public class Update {
public static void main(String[] args) {
//獲取對(duì)象
MongoClient mc =new MongoClient("localhost",27017);
//獲取庫(kù)對(duì)象
MongoDatabase db = mc.getDatabase("myschoolxxx");
//獲取表對(duì)象
MongoCollection<Document> student = db.getCollection("student");
//修改
//條件對(duì)象
Bson eq = Filters.eq("sname","趙六");
//document當(dāng)選
Document doc = new Document();
doc.put("$set", new Document("ssex","男"));
UpdateResult updateOne = student.updateOne(eq, doc);
System.out.println(updateOne);
mc.close();
}
}

可以看到剛開(kāi)始有三個(gè)趙六,修改后只修改了第一個(gè)趙六的性別。
刪除一條數(shù)據(jù)
package com.ape.conn;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.google.gson.Gson;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
public class Delete {
public static void main(String[] args) {
//獲取對(duì)象
MongoClient mc =new MongoClient("localhost",27017);
//獲取庫(kù)對(duì)象
MongoDatabase db = mc.getDatabase("myschoolxxx");
//獲取表對(duì)象
MongoCollection<Document> student = db.getCollection("student");
//創(chuàng)建刪除對(duì)象
Bson eq = Filters.eq("sname", "趙六");
DeleteResult deleteOne = student.deleteOne(eq);
//刪除一條
System.out.println(deleteOne.getDeletedCount());
if(deleteOne.getDeletedCount() > 0) {
System.out.println("刪除成功");
}else {
System.out.println("刪除失敗");
}
mc.close();
}
}
查詢數(shù)據(jù)
package com.ape.conn;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
public class Test01 {
public static void main(String[] args) {
//查找
//獲取對(duì)象
MongoClient mc =new MongoClient("localhost",27017);
//獲取庫(kù)對(duì)象
MongoDatabase db = mc.getDatabase("myschoolxxx");
//獲取表對(duì)象
MongoCollection<Document> student = db.getCollection("student");
//獲取表中數(shù)據(jù)
FindIterable<Document> find = student.find();
//獲取迭代器對(duì)象
MongoCursor<Document> iterator2 = find.iterator();
//輸出表中數(shù)據(jù)
while (iterator2.hasNext()) {
Document document = (Document) iterator2.next();
System.out.println(document);
}
//關(guān)閉資源
mc.close();
}
}
到此這篇關(guān)于Java MongoDB數(shù)據(jù)庫(kù)連接方法梳理的文章就介紹到這了,更多相關(guān)Java MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java操作MongoDB數(shù)據(jù)庫(kù)方法詳解
- Java操作MongoDB數(shù)據(jù)庫(kù)示例分享
- java實(shí)現(xiàn)mongodb的數(shù)據(jù)庫(kù)連接池
- Java的idea連接mongodb數(shù)據(jù)庫(kù)的詳細(xì)教程
- Java操作Mongodb數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)的增刪查改功能示例
- Java單例模式下的MongoDB數(shù)據(jù)庫(kù)操作工具類
- 【MongoDB for Java】Java操作MongoDB數(shù)據(jù)庫(kù)
- Java操作MongoDB數(shù)據(jù)庫(kù)的示例代碼
- JAVA操作MongoDB數(shù)據(jù)庫(kù)實(shí)例教程
相關(guān)文章
java中Memcached的使用實(shí)例(包括與Spring整合)
這篇文章主要介紹了java中Memcached的使用實(shí)例(包括與Spring整合),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
springboot vue項(xiàng)目后端列表接口分頁(yè)模糊查詢
這篇文章主要為大家介紹了springboot vue項(xiàng)目后端列表接口分頁(yè)模糊查詢,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式
這篇文章主要介紹了Java的深拷貝與淺拷貝的幾種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題
這篇文章主要介紹了Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條的示例代碼
本文詳細(xì)的介紹了SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
idea中g(shù)it如何刪除commit提交的log信息
這篇文章主要介紹了idea中g(shù)it如何刪除commit提交的log信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07

