安裝Robo 3T連接MongoDB數據庫教程:https://blog.csdn.net/baidu_39298625/article/details/98845789
使用Robo 3T操作MongoDB數據庫教程:https://blog.csdn.net/baidu_39298625/article/details/99654596
在網上搜的用IDEA鏈接MongoDB數據庫都是通過插件鏈接的,期初我以為在IDEA中無法實現用JAR包鏈接MongoDB數據庫,我還在CSDN中發了個帖子詢問,但是過了十多天也沒人回我。。。
額。。。
最后發現JAR包導入方式有問題,而且需要用到三個,當時我就只有一個還是個錯的。。。
首先下載三個JAR包,分別是:mongodb-driver-X.X.X.jar,bson-X.X.X.jar,mongodb-driver-core-X.X.X.jar
X.X.X是版本號,盡量保證版本號一致,否則運行會報錯,在這我使用的是3.11.0的版本,
下載鏈接:https://pan.baidu.com/s/1K4lvvEGRISfCSP2NRYySLA
提取碼:id93
如果你覺得導JAR包麻煩,你可以創建一個MAVEN項目,在pom.xml文件中添加相關配置,讓MAVEN項目自己導包
-
<dependencies>
-
<dependency>
-
<groupId>org.mongodb</groupId>
-
<artifactId>mongo-java-driver</artifactId>
-
<version>3.11.0</version>
-
</dependency>
-
</dependencies>
一.給項目導入上面三個JAR包
1.file->Project Structure...
2.選擇Modules 再點擊右側的添加按鈕
3.選擇三個JAR包添加至Modules中,盡量先把JAR拷貝到項目的lib文件夾(自己手動創建)里,再引入,避免以后JAR位置移動,項目找不到JAR包就會報錯。
二.建立鏈接
1.編寫MongoDB數據庫鏈接類
-
import com.mongodb.MongoClient;
-
import com.mongodb.MongoClientURI;
-
import com.mongodb.MongoCredential;
-
import com.mongodb.ServerAddress;
-
import com.mongodb.client.FindIterable;
-
import com.mongodb.client.MongoCollection;
-
import com.mongodb.client.MongoCursor;
-
import com.mongodb.client.MongoDatabase;
-
import org.bson.Document;
-
import java.util.ArrayList;
-
import java.util.List;
-
-
public class MongoDBConnection {
-
-
//不認證直接鏈接數據庫
-
public MongoClient getConn(){
-
-
MongoClient mongoClient = new MongoClient("localhost",27017);
-
//也可使用MongoClientURI
-
// MongoClientURI mongoClientURI = new MongoClientURI("mongodb://localhost:27017");
-
// MongoClient mongoClient = new MongoClient(mongoClientURI);
-
return mongoClient;
-
}
-
-
//通過用戶密碼認證鏈接數據庫
-
public MongoClient getConnByCredit(){
-
-
String name = "test";//用戶名
-
String dbName = "Test";//數據庫名
-
char [] pwd = "test".toCharArray();//用戶密碼(將字符串轉換成字符數組)
-
-
List<ServerAddress> addresses = new ArrayList<>();
-
//服務器地址:鏈接地址,端口號
-
ServerAddress address = new ServerAddress("localhost",27017);
-
addresses.add(address);
-
-
List<MongoCredential> credentials = new ArrayList<>();
-
//認證方法需要三個參數,用戶名,數據庫名,用戶密碼
-
MongoCredential credential = MongoCredential.createScramSha1Credential(name,dbName,pwd);
-
credentials.add(credential);
-
-
//創建鏈接對象
-
MongoClient mongoClient = new MongoClient(addresses,credentials);
-
return mongoClient;
-
-
}
-
-
//測試是否連接成功
-
public static void main(String[] args) {
-
MongoDBConnection mongoDBConnection = new MongoDBConnection();
-
MongoDatabase mongoDatabase = null;
-
MongoClient mongoClient = mongoDBConnection.getConn();
-
// MongoClient mongoClient = mongoDBConnection.getConnByCredit();
-
-
//查詢所有數據庫名稱
-
MongoIterable<String> dbNameList = mongoClient.listDatabaseNames();
-
System.out.println( "查詢所有數據庫名稱:");
-
for(String dbName : dbNameList)
-
System.out.println(dbName);
-
-
//創建數據庫對象
-
mongoDatabase = mongoClient.getDatabase( "Test");
-
//查詢Test數據庫中所有集合名稱
-
MongoIterable<String> colNameList = mongoDatabase.listCollectionNames();
-
System.out.println( "查詢Test數據庫中所有集合名稱:");
-
for(String colName: colNameList)
-
System.out.println(colName);
-
-
//關閉連接
-
mongoClient.close();
-
}
-
}
-
-
}
輸出結果:
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
查詢所有數據庫名稱:
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Cluster description not yet available. Waiting for 30000 ms before timing out
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Opened connection [connectionId{localValue:1, serverValue:23}] to localhost:27017
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Monitor thread successfully connected to server with description ServerDescription{address=localhost:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[4, 0, 11]}, minWireVersion=0, maxWireVersion=7, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=2393400}
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Opened connection [connectionId{localValue:2, serverValue:24}] to localhost:27017
Test
admin
config
local
查詢Test數據庫中所有集合名稱:
user
九月 11, 2019 4:31:16 下午 com.mongodb.diagnostics.logging.JULLogger log
信息: Closed connection [connectionId{localValue:2, serverValue:24}] to localhost:27017 because the pool has been closed.
2.遇到的問題
編寫MongoDB數據庫連接類時,我嘗試去用try-catch去捕獲連接中可能會出現的異常,但是發現try-catch語句並沒有任何作用,即使你真的把端口號或者服務器地址改錯,也不會在連接環節拋出任何異常,只有到后邊真正用到數據庫內容時才會報錯。所以在這里也沒有再多余使用try-catch語句,等到后邊進行具體操作數據的時候再使用。
三.對數據庫進行CRUD操作
原始數據:
{
"_id" : ObjectId("5d554f1e5306e8e23cbe5956"),
"user_id" : "1",
"user_name" : "aaa",
"user_pwd" : "aaa"
}
{
"_id" : ObjectId("5d554f1e5306e8e23cbe5959"),
"user_id" : "2",
"user_name" : "bbb",
"user_pwd" : "bbb"
}
{
"_id" : ObjectId("5d554f1e5306e8e23cbe595c"),
"user_id" : "3",
"user_name" : "123",
"user_pwd" : "123"
}
1.集合查詢
-
//查詢指定數據庫中所有集合
-
public void selectCollection(MongoDatabase database){
-
-
try{
-
//查詢Test數據庫中所有集合名稱
-
MongoIterable<String> colNameList = database.listCollectionNames();
-
for(String colName: colNameList)
-
System.out.println(colName);
-
System.out.println( "[INFO] : Select collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Select collection field!");
-
}
2.新建集合
-
//新建集合
-
public void createCollection(MongoDatabase database){
-
try{
-
//創建新集合
-
database.createCollection( "testCol");
-
System.out.println( "[INFO] : Create collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Create collection field!");
-
}
-
}
3.刪除集合
-
//刪除集合
-
public void deleteCollection(MongoDatabase database){
-
try{
-
//刪除集合
-
MongoCollection mongoCollection = database.getCollection( "testCol");
-
mongoCollection.drop();
-
System.out.println( "[INFO] : Drop collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Drop collection field!");
-
}
-
}
4.查詢文檔數據:
-
//查詢文檔數據
-
public void selectData(MongoDatabase database){
-
-
try{
-
//獲取數據庫中的user集合
-
MongoCollection<Document> collection = database.getCollection( "user");
-
//獲取user集合中的文檔
-
FindIterable<Document> iterable = collection.find();
-
//通過迭代器遍歷找到的文檔中的信息
-
MongoCursor<Document> iterator = iterable.iterator();
-
while(iterator.hasNext()){
-
System.out.println(iterator.next().toJson());
-
}
-
System.out.println( "[INFO] : Select data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Select data field!");
-
}
-
}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!
5.向集合中插入數據
(單數據插入和多數據插入,可以通過Robo 3T去看數據庫的變化,在這單個方法里邊不想再寫多余的查詢語句,下邊的修改刪除也一樣,分開寫太麻煩,了解過程就可以了)
-
//插入數據
-
public void insertData(MongoDatabase database){
-
try {
-
-
MongoCollection mongoCollection = database.getCollection( "user");
-
-
//一次插入一條數據
-
Document document = new Document("user_id","4")
-
.append( "user_name","test")
-
.append( "user_pwd","test");
-
mongoCollection.insertOne(document);
-
-
//一次插入多條數據
-
Document document1 = new Document("user_id","5")
-
.append( "user_name","test")
-
.append( "user_pwd","test1");
-
Document document2 = new Document("user_id","6")
-
.append( "user_name","test")
-
.append( "user_pwd","test2");
-
List<Document> documents = new ArrayList<>();
-
documents.add(document1);
-
documents.add(document2);
-
mongoCollection.insertMany(documents);
-
-
System.out.println( "[INFO] : Insert data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Insert data field!");
-
}
-
}
6.根據條件修改集合中的數據
-
//修改數據
-
public void updateData(MongoDatabase database){
-
try {
-
MongoCollection mongoCollection = database.getCollection( "user");
-
//修改滿足條件的第一條數據
-
mongoCollection.updateOne(Filters.eq( "user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
-
//修改滿足條件的所有數據
-
mongoCollection.updateMany(Filters.eq( "user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
-
-
System.out.println( "[INFO] : Update data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Update data field!");
-
}
-
}
7.根絕條件刪除集合中的數據
-
//刪除數據
-
public void deleteData(MongoDatabase database){
-
try {
-
MongoCollection mongoCollection = database.getCollection( "user");
-
//刪除滿足條件的第一條記錄
-
mongoCollection.deleteOne(Filters.eq( "user_name","test"));
-
//刪除滿足條件的所有數據
-
mongoCollection.deleteMany(Filters.eq( "user_name","test"));
-
System.out.println( "[INFO] : Delete data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Delete data field!");
-
}
-
}
8.全部代碼及所有操作運行結果
-
package September_9;
-
-
import com.mongodb.MongoClient;
-
import com.mongodb.MongoException;
-
import com.mongodb.client.*;
-
import com.mongodb.client.model.Filters;
-
import org.bson.Document;
-
-
import java.util.ArrayList;
-
import java.util.List;
-
-
public class DBOperation {
-
-
/**
-
* 操作數據庫集合:
-
* 查詢、新建、刪除
-
* @param database
-
*/
-
-
//查詢指定數據庫中所有集合
-
public void selectCollection(MongoDatabase database){
-
-
try{
-
//查詢Test數據庫中所有集合名稱
-
MongoIterable<String> colNameList = database.listCollectionNames();
-
for(String colName: colNameList)
-
System.out.println(colName);
-
System.out.println( "[INFO] : Select collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Select collection field!");
-
}
-
-
}
-
-
//新建集合
-
public void createCollection(MongoDatabase database){
-
try{
-
//創建新集合
-
database.createCollection( "testCol");
-
System.out.println( "[INFO] : Create collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Create collection field!");
-
}
-
}
-
-
//刪除集合
-
public void deleteCollection(MongoDatabase database){
-
try{
-
//刪除集合
-
MongoCollection mongoCollection = database.getCollection( "testCol");
-
mongoCollection.drop();
-
System.out.println( "[INFO] : Drop collection success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Drop collection field!");
-
}
-
}
-
-
/**
-
* 操作數據庫數據:
-
* 查詢、插入、修改、刪除
-
* @param database
-
*/
-
-
//查詢文檔數據
-
public void selectData(MongoDatabase database){
-
-
try{
-
//獲取數據庫中的user集合
-
MongoCollection<Document> collection = database.getCollection( "user");
-
//獲取user集合中的文檔
-
FindIterable<Document> iterable = collection.find();
-
//通過迭代器遍歷找到的文檔中的信息
-
MongoCursor<Document> iterator = iterable.iterator();
-
while(iterator.hasNext()){
-
System.out.println(iterator.next().toJson());
-
}
-
System.out.println( "[INFO] : Select data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Select data field!");
-
}
-
}
-
-
//插入數據
-
public void insertData(MongoDatabase database){
-
try {
-
-
MongoCollection mongoCollection = database.getCollection( "user");
-
-
//一次插入一條數據
-
Document document = new Document("user_id","4")
-
.append( "user_name","test")
-
.append( "user_pwd","test");
-
mongoCollection.insertOne(document);
-
-
//一次插入多條數據
-
Document document1 = new Document("user_id","5")
-
.append( "user_name","test")
-
.append( "user_pwd","test1");
-
Document document2 = new Document("user_id","6")
-
.append( "user_name","test")
-
.append( "user_pwd","test2");
-
List<Document> documents = new ArrayList<>();
-
documents.add(document1);
-
documents.add(document2);
-
mongoCollection.insertMany(documents);
-
-
System.out.println( "[INFO] : Insert data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Insert data field!");
-
}
-
}
-
-
//修改數據
-
public void updateData(MongoDatabase database){
-
try {
-
MongoCollection mongoCollection = database.getCollection( "user");
-
//修改滿足條件的第一條數據
-
mongoCollection.updateOne(Filters.eq( "user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
-
//修改滿足條件的所有數據
-
mongoCollection.updateMany(Filters.eq( "user_name","test"),new Document("$set",new Document("user_pwd","tttt")));
-
-
System.out.println( "[INFO] : Update data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Update data field!");
-
}
-
}
-
-
//刪除數據
-
public void deleteData(MongoDatabase database){
-
try {
-
MongoCollection mongoCollection = database.getCollection( "user");
-
//刪除滿足條件的第一條記錄
-
mongoCollection.deleteOne(Filters.eq( "user_name","test"));
-
//刪除滿足條件的所有數據
-
mongoCollection.deleteMany(Filters.eq( "user_name","test"));
-
System.out.println( "[INFO] : Delete data success!");
-
} catch(MongoException e){
-
e.printStackTrace();
-
System.out.println( "[ERROR] : Delete data field!");
-
}
-
}
-
-
public static void main(String[] args) {
-
DBOperation dbOperation = new DBOperation();
-
-
MongoDBConnection mongoDBConnection = new MongoDBConnection();
-
-
//新建鏈接
-
MongoClient mongoClient = mongoDBConnection.getConn();
-
//新建數據庫對象
-
MongoDatabase mongoDatabase = mongoClient.getDatabase( "Test");
-
-
//查詢指定數據庫中的所有集合
-
System.out.println( "原始集合:");
-
dbOperation.selectCollection(mongoDatabase);
-
//創建新集合
-
dbOperation.createCollection(mongoDatabase);
-
System.out.println( "新建集合后,再次查詢數據庫中的所有集合:");
-
dbOperation.selectCollection(mongoDatabase);
-
//刪除集合
-
dbOperation.deleteCollection(mongoDatabase);
-
System.out.println( "刪除集合后,再次查詢數據庫中的所有集合:");
-
dbOperation.selectCollection(mongoDatabase);
-
-
-
//查詢指定集合中的所有數據
-
System.out.println( "原始數據:");
-
dbOperation.selectData(mongoDatabase);
-
//向指定集合中插入數據
-
dbOperation.insertData(mongoDatabase);
-
System.out.println( "插入數據后:");
-
dbOperation.selectData(mongoDatabase);
-
//根據條件修改集合中的數據
-
dbOperation.updateData(mongoDatabase);
-
System.out.println( "修改數據后:");
-
dbOperation.selectData(mongoDatabase);
-
//根據條件刪除集合中的數據
-
dbOperation.deleteData(mongoDatabase);
-
System.out.println( "刪除數據后:");
-
dbOperation.selectData(mongoDatabase);
-
-
//關閉連接
-
mongoClient.close();
-
-
-
}
-
-
}
運行結果:
原始集合:
user
[INFO] : Select collection success!
[INFO] : Create collection success!
新建集合后,再次查詢數據庫中的所有集合:
testCol
user
[INFO] : Select collection success!
[INFO] : Drop collection success!
刪除集合后,再次查詢數據庫中的所有集合:
user
[INFO] : Select collection success!
原始數據:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!
[INFO] : Insert data success!
插入數據后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
{"_id": {"$oid": "5d79d9f21781915b8368c25f"}, "user_id": "4", "user_name": "test", "user_pwd": "test"}
{"_id": {"$oid": "5d79d9f21781915b8368c260"}, "user_id": "5", "user_name": "test", "user_pwd": "test1"}
{"_id": {"$oid": "5d79d9f21781915b8368c261"}, "user_id": "6", "user_name": "test", "user_pwd": "test2"}
[INFO] : Select data success!
[INFO] : Update data success!
修改數據后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
{"_id": {"$oid": "5d79d9f21781915b8368c25f"}, "user_id": "4", "user_name": "test", "user_pwd": "tttt"}
{"_id": {"$oid": "5d79d9f21781915b8368c260"}, "user_id": "5", "user_name": "test", "user_pwd": "tttt"}
{"_id": {"$oid": "5d79d9f21781915b8368c261"}, "user_id": "6", "user_name": "test", "user_pwd": "tttt"}
[INFO] : Select data success!
[INFO] : Delete data success!
刪除數據后:
{"_id": {"$oid": "5d554f1e5306e8e23cbe5956"}, "user_id": "1", "user_name": "aaa", "user_pwd": "aaa"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe5959"}, "user_id": "2", "user_name": "bbb", "user_pwd": "bbb"}
{"_id": {"$oid": "5d554f1e5306e8e23cbe595c"}, "user_id": "3", "user_name": "123", "user_pwd": "123"}
[INFO] : Select data success!