MongoDB Java
在本章中,我们将学习如何设置MongoDB CLIENT。
安装
在Java程序中开始使用MongoDB之前,需要确保在计算机上设置了MongoDB CLIENT和Java。您可以按照Java教程以在计算机上安装Java。现在,让我们检查如何设置MongoDB CLIENT。
您需要下载jar
mongodb-driver-3.11.2.jar and its dependency mongodb-driver-core-3.11.2.jar.
。确保下载这些jar文件的最新版本。您需要将下载的jar文件包含到类路径中。
连接到数据库
要连接数据库,您需要指定数据库名称,如果数据库不存在,则MongoDB会自动创建它。
以下是连接到数据库的代码片段-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class ConnectToDB { public static void main( String args[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("Credentials ::"+ credential); } }
现在,让我们编译并运行以上程序,以创建数据库myDb,如下所示。
$javac ConnectToDB.java $java ConnectToDB
执行后,上述程序将为您提供以下输出。
已成功连接到数据库 Credentials ::MongoCredential{ mechanism = null, userName = 'sampleUser', source = 'myDb', password = <hidden>, mechanismProperties = {}}
创建集合
要创建集合,使用 com.mongodb.client.MongoDatabase 类的 createCollection ()方法。
以下是创建集合的代码片段-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class CreatingCollection { public static void main( String args[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建集合 database.createCollection("sampleCollection"); System.out.println("已成功创建集合"); } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功创建集合
获取/选择集合
要从数据库中获取/选择一个集合,需要使用 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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); // 创建集合 System.out.println("已成功创建集合"); // 检索集合 MongoCollection<Document> collection = database.getCollection("myCollection"); System.out.println("已成功选择集合myCollection"); } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功创建集合 已成功选择集合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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); // 创建集合 database.createCollection("sampleCollection"); System.out.println("已成功创建集合"); // 检索集合 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("文档插入成功"); }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功选择集合sampleCollection 文档插入成功
检索所有文档
要从集合中选择所有文档,请使用com.mongodb.client.MongoCollection
的class
。此方法返回一个游标,因此您需要迭代此游标。
方法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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 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++; } } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功选择集合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()
以下是选择第一个文档的程序-
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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 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++; } } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功选择集合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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 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++; } } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功选择集合sampleCollection 文档删除成功...Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=/rethinkdb/, by=(cainiaoplus.com)}}
删除集合
要从数据库中删除集合,您需要使用类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[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); // 创建集合 System.out.println("已成功创建集合"); // 检索集合 MongoCollection<Document> collection = database.getCollection("sampleCollection"); // 删除集合 collection.drop(); System.out.println("已成功删除集合"); } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 Collection sampleCollection selected successfully 已成功删除集合
列出所有集合
要列出数据库中的所有集合,您需要使用类com.mongodb.client.MongoDatabase的
。
方法listCollectionNames()
以下是列出数据库的所有集合的程序-
import com.mongodb.client.MongoDatabase; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; public class ListOfCollection { public static void main( String args[] ) { // 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("已成功连接到数据库"); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("已成功创建集合"); for (String name : database.listCollectionNames()) { System.out.println(name); } } }
在编译时,上述程序为您提供以下结果-
已成功连接到数据库 已成功创建集合 myCollection myCollection1 myCollection5
其余的 MongoDB 方法 save ()、 limit ()、 skip ()、 sort ()等的工作方式与后续教程中解释的相同。