在本章中,我們將學(xué)習(xí)如何設(shè)置MongoDB CLIENT。
在Java程序中開始使用MongoDB之前,需要確保在計(jì)算機(jī)上設(shè)置了MongoDB CLIENT和Java。您可以按照J(rèn)ava教程以在計(jì)算機(jī)上安裝Java?,F(xiàn)在,讓我們檢查如何設(shè)置MongoDB CLIENT。
您需要下載jar mongodb-driver-3.11.2.jar and its dependency mongodb-driver-core-3.11.2.jar.
。確保下載這些jar文件的最新版本。
您需要將下載的jar文件包含到類路徑中。
要連接數(shù)據(jù)庫,您需要指定數(shù)據(jù)庫名稱,如果數(shù)據(jù)庫不存在,則MongoDB會(huì)自動(dòng)創(chuàng)建它。
以下是連接到數(shù)據(jù)庫的代碼片段-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class ConnectToDB { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("Credentials ::"+ credential); } }
現(xiàn)在,讓我們編譯并運(yùn)行以上程序,以創(chuàng)建數(shù)據(jù)庫myDb,如下所示。
$javac ConnectToDB.java $java ConnectToDB
執(zhí)行后,上述程序?qū)槟峁┮韵螺敵觥?/p>
已成功連接到數(shù)據(jù)庫 Credentials ::MongoCredential{ mechanism = null, userName = 'sampleUser', source = 'myDb', password = <hidden>, mechanismProperties = {}}
要?jiǎng)?chuàng)建集合,使用 com.mongodb.client.MongoDatabase 類的 createCollection ()方法。
以下是創(chuàng)建集合的代碼片段-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class CreatingCollection { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); //訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); //創(chuàng)建集合 database.createCollection("sampleCollection"); System.out.println("已成功創(chuàng)建集合"); } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功創(chuàng)建集合
要從數(shù)據(jù)庫中獲取/選擇一個(gè)集合,需要使用 com.mongodb.client.MongoDatabase 類的 getCollection ()方法。
以下是獲取/選擇集合的程序-
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class selectingCollection { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 創(chuàng)建集合 System.out.println("已成功創(chuàng)建集合"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("myCollection"); System.out.println("已成功選擇集合myCollection"); } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功創(chuàng)建集合 已成功選擇集合myCollection
要將文檔插入到 MongoDB 中,需要使用 com.MongoDB.client.MongoCollection 類的 insert ()方法。
以下是插入文檔的代碼片段-
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.MongoClient; public class InsertingDocument { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 創(chuàng)建集合 database.createCollection("sampleCollection"); System.out.println("已成功創(chuàng)建集合"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); System.out.println("已成功選擇集合sampleCollection"); Document document = new Document("title", "MongoDB") .append("description", "database") .append("likes", 100) .append("url", "/mongodb/") .append("by", "(cainiaoplus.com)"); //將文檔插入集合中 collection.insertOne(document); System.out.println("文檔插入成功"); }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功選擇集合sampleCollection 文檔插入成功
要從集合中選擇所有文檔,請使用com.mongodb.client.MongoCollection
的class
。此方法返回一個(gè)游標(biāo),因此您需要迭代此游標(biāo)。
方法find()
以下是選擇所有文檔的程序-
import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class RetrievingAllDocuments { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); System.out.println("已成功選擇集合sampleCollection"); Document document1 = new Document("title", "MongoDB") .append("description", "database") .append("likes", 100) .append("url", "/mongodb/") .append("by", "(cainiaoplus.com)"); Document document2 = new Document("title", "RethinkDB") .append("description", "database") .append("likes", 200) .append("url", "/rethinkdb/") .append("by", "(cainiaoplus.com)"); List<Document> list = new ArrayList<Document>(); list.add(document1); list.add(document2); collection.insertMany(list); // 獲取可迭代對象 FindIterable<Document> iterDoc = collection.find(); int i = 1; // 獲取迭代器 Iterator it = iterDoc.iterator(); while (it.hasNext()) { System.out.println(it.next()); i++; } } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功選擇集合sampleCollection{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=/mongodb/, by=(cainiaoplus.com)}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=/rethinkdb/, by=(cainiaoplus.com)}}
要從集合中更新文檔,請使用com.mongodb.client.MongoCollection的class
。
方法updateOne()
以下是選擇第一個(gè)文檔的程序-
import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import com.mongodb.client.model.Updates; import java.util.Iterator; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class UpdatingDocuments { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); System.out.println("已成功選擇集合myCollection"); collection.updateOne(Filters.eq("title", 1), Updates.set("likes", 150)); System.out.println("文檔更新成功..."); // 更新后檢索文檔 // 獲取可迭代對象 FindIterable<Document> iterDoc = collection.find(); int i = 1; // 獲取迭代器 Iterator it = iterDoc.iterator(); while (it.hasNext()) { System.out.println(it.next()); i++; } } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功選擇集合myCollection 文檔更新成功...Document{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=/mongodb/, by=(cainiaoplus.com)}}Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=/rethinkdb/, by=(cainiaoplus.com)}}
要從集合中刪除文檔,您需要使用類com.mongodb.client.MongoCollection
的
方法。deleteOne()
以下是刪除文檔的程序-
import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; import java.util.Iterator; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class DeletingDocuments { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); System.out.println("已成功選擇集合sampleCollection"); // 刪除文件 collection.deleteOne(Filters.eq("title", "MongoDB")); System.out.println("文檔刪除成功..."); // 更新后檢索文檔 // 獲取可迭代對象 FindIterable<Document> iterDoc = collection.find(); int i = 1; // 獲取迭代器 Iterator it = iterDoc.iterator(); while (it.hasNext()) { System.out.println(it.next()); i++; } } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功選擇集合sampleCollection 文檔刪除成功...Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=/rethinkdb/, by=(cainiaoplus.com)}}
要從數(shù)據(jù)庫中刪除集合,您需要使用類com.mongodb.client.MongoCollection
的
方法。drop()
以下是刪除集合的程序-
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class DropingCollection { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); // 創(chuàng)建集合 System.out.println("已成功創(chuàng)建集合"); // 檢索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); // 刪除集合 collection.drop(); System.out.println("已成功刪除集合"); } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 Collection sampleCollection selected successfully 已成功刪除集合
要列出數(shù)據(jù)庫中的所有集合,您需要使用類com.mongodb.client.MongoDatabase的
。
方法listCollectionNames()
以下是列出數(shù)據(jù)庫的所有集合的程序-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class ListOfCollection { public static void main( String args[] ) { // 創(chuàng)建一個(gè)Mongo客戶端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 創(chuàng)建憑證 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功連接到數(shù)據(jù)庫"); // 訪問數(shù)據(jù)庫 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("已成功創(chuàng)建集合"); for (String name : database.listCollectionNames()) { System.out.println(name); } } }
在編譯時(shí),上述程序?yàn)槟峁┮韵陆Y(jié)果-
已成功連接到數(shù)據(jù)庫 已成功創(chuàng)建集合 myCollection myCollection1 myCollection5
其余的 MongoDB 方法 save ()、 limit ()、 skip ()、 sort ()等的工作方式與后續(xù)教程中解釋的相同。