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