MongoDB:在 Java 中使用 MongoDB

本是古典 何须时尚 2023-09-23 21:13 175阅读 0赞

除了通过启动 mongo 进程进如 Shell 环境访问数据库外,MongoDB 还提供了其他基于编程语言的访问数据库方法。MongoDB 官方提供了 Java 语言的驱动包,利用这些驱动包可使用多种编程方法来连接并操作 MongoDB 数据库。

想要在 Java 程序中使用 MongoDB,需要确保您的电脑上已经安装了 MongoDB,并搭建好了 Java 的环境。

本篇内容主要介绍:Java 实现对 MongDB 的操作、Java 操作 MongoDB 数据库 Demo


文章目录

    • 一、Java 实现对 MongDB 的操作
        • 1、前提条件
        • 2、添加依赖
    • 二、Java 操作 MongoDB 数据库 Demo
        • 1、连接数据库
        • 2、创建集合
        • 3、列出所有集合
        • 4、获取/选择集合
        • 5、插入文档
        • 6、查询文档
        • 7、更新文档
        • 8、删除文档
        • 9、删除集合

一、Java 实现对 MongDB 的操作

1、前提条件

除了通过启动 mongo 进程进如 Shell 环境访问数据库外,MongoDB 还提供了其他基于编程语言的访问数据库方法。MongoDB 官方提供了 Java 语言的驱动包,利用这些驱动包可使用多种编程方法来连接并操作 MongoDB 数据库。

想要在 Java 程序中使用 MongoDB,需要确保您的电脑上已经安装了 MongoDB,并搭建好了 Java 的环境。

2、添加依赖

在 Maven 中添加以下依赖来使用操作 MongoDB 数据库:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mongodb</groupId>
  4. <artifactId>bson</artifactId>
  5. <version>3.12.11</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.mongodb</groupId>
  9. <artifactId>mongodb-driver</artifactId>
  10. <version>3.12.11</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.mongodb</groupId>
  14. <artifactId>mongodb-driver-core</artifactId>
  15. <version>3.12.11</version>
  16. </dependency>
  17. ...
  18. </dependencies>

二、Java 操作 MongoDB 数据库 Demo

1、连接数据库

  1. package com.lizhengi.demo;
  2. import com.mongodb.client.MongoDatabase;
  3. import com.mongodb.MongoClient;
  4. import com.mongodb.MongoCredential;
  5. /**
  6. * @author liziheng
  7. * @version 1.0.0
  8. * @description 连接数据库
  9. * @date 2023-01-04 5:19 下午
  10. **/
  11. public class ConnectToMongodb {
  12. public static void main(String[] args) {
  13. // 创建 MongoDB 连接
  14. MongoClient mongo = new MongoClient("localhost", 27017);
  15. // 连接到 MongoDB
  16. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  17. System.out.println("Credentials ::" + credential);
  18. // 访问数据库
  19. MongoDatabase database = mongo.getDatabase("lizhengi");
  20. System.out.println("Connect to database successfully!");
  21. System.out.println("MongoDatabase info is : " + database.getName());
  22. }
  23. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi

2、创建集合

  1. package com.lizhengi.demo;
  2. import com.mongodb.client.MongoDatabase;
  3. import com.mongodb.MongoClient;
  4. import com.mongodb.MongoCredential;
  5. /**
  6. * @author liziheng
  7. * @version 1.0.0
  8. * @description 创建集合
  9. * @date 2023-01-04 7:36 下午
  10. **/
  11. public class CreatingCollection {
  12. public static void main(String[] args) {
  13. // 创建 MongoDB 连接
  14. MongoClient mongo = new MongoClient("localhost", 27017);
  15. // 连接到 MongoDB
  16. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  17. System.out.println("Credentials ::" + credential);
  18. // 访问数据库
  19. MongoDatabase database = mongo.getDatabase("lizhengi");
  20. System.out.println("Connect to database successfully!");
  21. System.out.println("MongoDatabase info is : " + database.getName());
  22. // 创建集合
  23. database.createCollection("lizhengi_test_3");
  24. System.out.println("create collection successfully!");
  25. }
  26. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi

create collection successfully!

3、列出所有集合

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.MongoCollection;
  5. import com.mongodb.client.MongoDatabase;
  6. import org.bson.Document;
  7. /**
  8. * @author liziheng
  9. * @version 1.0.0
  10. * @description 列出所有集合
  11. * @date 2023-01-04 7:56 下午
  12. **/
  13. public class ListOfCollection {
  14. public static void main(String[] args) {
  15. // 创建 MongoDB 连接
  16. MongoClient mongo = new MongoClient("localhost", 27017);
  17. // 连接到 MongoDB
  18. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  19. System.out.println("Credentials ::" + credential);
  20. // 访问数据库
  21. MongoDatabase database = mongo.getDatabase("lizhengi");
  22. System.out.println("Connect to database successfully!");
  23. System.out.println("MongoDatabase info is : " + database.getName());
  24. // 检索集合列表
  25. for (String name : database.listCollectionNames()) {
  26. System.out.println(name);
  27. }
  28. }
  29. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi

lizhengi
lizhengi_test_3
lizhengi_test_2

4、获取/选择集合

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.MongoCollection;
  5. import com.mongodb.client.MongoDatabase;
  6. import org.bson.Document;
  7. /**
  8. * @author liziheng
  9. * @version 1.0.0
  10. * @description 获取/选择集合
  11. * @date 2023-01-04 7:40 下午
  12. **/
  13. public class SelectingCollection {
  14. public static void main(String[] args) {
  15. // 创建 MongoDB 连接
  16. MongoClient mongo = new MongoClient("localhost", 27017);
  17. // 连接到 MongoDB
  18. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  19. System.out.println("Credentials ::" + credential);
  20. // 访问数据库
  21. MongoDatabase database = mongo.getDatabase("lizhengi");
  22. System.out.println("Connect to database successfully!");
  23. System.out.println("MongoDatabase info is : " + database.getName());
  24. // 创建集合
  25. MongoCollection<Document> collection = database.getCollection("lizhengi");
  26. System.out.println("chose collection : " + collection.getNamespace());
  27. }
  28. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi
chose collection : lizhengi.lizhengi

5、插入文档

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.MongoCollection;
  5. import com.mongodb.client.MongoDatabase;
  6. import org.bson.Document;
  7. /**
  8. * @author liziheng
  9. * @version 1.0.0
  10. * @description 插入文档
  11. * @date 2023-01-04 7:45 下午
  12. **/
  13. public class InsertingDocument {
  14. public static void main(String[] args) {
  15. // 创建 MongoDB 连接
  16. MongoClient mongo = new MongoClient("localhost", 27017);
  17. // 连接到 MongoDB
  18. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  19. System.out.println("Credentials ::" + credential);
  20. // 访问数据库
  21. MongoDatabase database = mongo.getDatabase("lizhengi");
  22. System.out.println("Connect to database successfully!");
  23. System.out.println("MongoDatabase info is : " + database.getName());
  24. // 检索集合
  25. MongoCollection<Document> collection = database.getCollection("lizhengi");
  26. System.out.println("chose collection : " + collection.getNamespace());
  27. Document document = new Document("title", "MongoDB")
  28. .append("description", "database")
  29. .append("likes", 200)
  30. .append("url", "https://lizhengi.blog.csdn.net/")
  31. .append("by", "lizhengi");
  32. // 将文档插入到集合中
  33. collection.insertOne(document);
  34. System.out.println("Document insert successfully!");
  35. }
  36. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi
chose collection : lizhengi.lizhengi

Document insert successfully!

6、查询文档

  1. package com.lizhengi.demo;
  2. import com.mongodb.client.FindIterable;
  3. import com.mongodb.client.MongoCollection;
  4. import com.mongodb.client.MongoDatabase;
  5. import org.bson.Document;
  6. import com.mongodb.MongoClient;
  7. import com.mongodb.MongoCredential;
  8. /**
  9. * @author liziheng
  10. * @version 1.0.0
  11. * @description 查询文档
  12. * @date 2023-01-04 7:52 下午
  13. **/
  14. public class RetrievingAllDocuments {
  15. public static void main(String[] args) {
  16. // 创建 MongoDB 连接
  17. MongoClient mongo = new MongoClient("localhost", 27017);
  18. // 连接到 MongoDB
  19. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  20. System.out.println("Credentials ::" + credential);
  21. // 访问数据库
  22. MongoDatabase database = mongo.getDatabase("lizhengi");
  23. System.out.println("Connect to database successfully!");
  24. System.out.println("MongoDatabase info is : " + database.getName());
  25. // 检索集合
  26. MongoCollection<Document> collection = database.getCollection("lizhengi");
  27. System.out.println("chose collection : " + collection.getNamespace());
  28. // 获取 iterable 对象
  29. FindIterable<Document> iterDoc = collection.find();
  30. int i = 1;
  31. // 获取迭代器
  32. for (Document document : iterDoc) {
  33. System.out.println(document);
  34. i++;
  35. }
  36. }
  37. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi
chose collection : lizhengi.lizhengi

Document{ {_id=63b5676adcb7bc291eb5285d, title=MongoDB, description=database, likes=200, url=https://lizhengi.blog.csdn.net/, by=lizhengi}}
Document{ {_id=63b568fa76a0f93c0a6c9f2a, title=MongoDB, description=database, likes=200, url=https://lizhengi.blog.csdn.net/, by=lizhengi2}}

7、更新文档

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.FindIterable;
  5. import com.mongodb.client.MongoCollection;
  6. import com.mongodb.client.MongoDatabase;
  7. import com.mongodb.client.model.Filters;
  8. import com.mongodb.client.model.Updates;
  9. import org.bson.Document;
  10. /**
  11. * @author liziheng
  12. * @version 1.0.0
  13. * @description 更新文档
  14. * @date 2023-01-04 7:59 下午
  15. **/
  16. public class UpdatingDocuments {
  17. public static void main(String[] args) {
  18. // 创建 MongoDB 连接
  19. MongoClient mongo = new MongoClient("localhost", 27017);
  20. // 连接到 MongoDB
  21. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  22. System.out.println("Credentials ::" + credential);
  23. // 访问数据库
  24. MongoDatabase database = mongo.getDatabase("lizhengi");
  25. System.out.println("Connect to database successfully!");
  26. System.out.println("MongoDatabase info is : " + database.getName());
  27. // 检索集合
  28. MongoCollection<Document> collection = database.getCollection("lizhengi");
  29. System.out.println("chose collection : " + collection.getNamespace());
  30. // 更新单个可用 updateOne
  31. collection.updateMany(Filters.eq("title", "MongoDB"), Updates.set("likes", 150));
  32. System.out.println("Document update successfully...");
  33. // 更新后检索文档
  34. // 获取 iterable 对象
  35. FindIterable<Document> iterDoc = collection.find();
  36. int i = 1;
  37. // 获取迭代器
  38. for (Document document : iterDoc) {
  39. System.out.println(document);
  40. i++;
  41. }
  42. }
  43. }

运行 Main 函数,返回以下结果:

  1. Credentials ::MongoCredential{mechanism=null, userName='lizhengi', source='lizhengi', password=<hidden>, mechanismProperties=<hidden>}
  2. Connect to database successfully!
  3. MongoDatabase info is : lizhengi
  4. chose collection : lizhengi.lizhengi
  5. Document update successfully...
  6. Document{
  7. {_id=63b5676adcb7bc291eb5285d, title=MongoDB, description=database, likes=150, url=https://lizhengi.blog.csdn.net/, by=lizhengi}}
  8. Document{
  9. {_id=63b568fa76a0f93c0a6c9f2a, title=MongoDB, description=database, likes=200, url=https://lizhengi.blog.csdn.net/, by=lizhengi2}}

8、删除文档

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.FindIterable;
  5. import com.mongodb.client.MongoCollection;
  6. import com.mongodb.client.MongoDatabase;
  7. import com.mongodb.client.model.Filters;
  8. import org.bson.Document;
  9. /**
  10. * @author liziheng
  11. * @version 1.0.0
  12. * @description 删除文档
  13. * @date 2023-01-04 8:03 下午
  14. **/
  15. public class DeletingDocuments {
  16. public static void main(String[] args) {
  17. // 创建 MongoDB 连接
  18. MongoClient mongo = new MongoClient("localhost", 27017);
  19. // 连接到 MongoDB
  20. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  21. System.out.println("Credentials ::" + credential);
  22. // 访问数据库
  23. MongoDatabase database = mongo.getDatabase("lizhengi");
  24. System.out.println("Connect to database successfully!");
  25. System.out.println("MongoDatabase info is : " + database.getName());
  26. // 检索集合
  27. MongoCollection<Document> collection = database.getCollection("lizhengi");
  28. System.out.println("chose collection : " + collection.getNamespace());
  29. // 删除文档 删除多个可用 deleteMany
  30. collection.deleteOne(Filters.eq("title", "MongoDB"));
  31. System.out.println("Document delete successfully...");
  32. // 删除后检索文档
  33. // 获取 iterable 对象
  34. FindIterable<Document> iterDoc = collection.find();
  35. int i = 1;
  36. // 获取迭代器
  37. for (Document document : iterDoc) {
  38. System.out.println(document);
  39. i++;
  40. }
  41. }
  42. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi
chose collection : lizhengi.lizhengi

Document delete successfully…
Document{ {_id=63b568fa76a0f93c0a6c9f2a, title=MongoDB, description=database, likes=200, url=https://lizhengi.blog.csdn.net/, by=lizhengi2}}

9、删除集合

  1. package com.lizhengi.demo;
  2. import com.mongodb.MongoClient;
  3. import com.mongodb.MongoCredential;
  4. import com.mongodb.client.MongoCollection;
  5. import com.mongodb.client.MongoDatabase;
  6. import org.bson.Document;
  7. /**
  8. * @author liziheng
  9. * @version 1.0.0
  10. * @description 删除集合
  11. * @date 2023-01-04 8:06 下午
  12. **/
  13. public class DropingCollection {
  14. public static void main(String[] args) {
  15. // 创建 MongoDB 连接
  16. MongoClient mongo = new MongoClient("localhost", 27017);
  17. // 连接到 MongoDB
  18. MongoCredential credential = MongoCredential.createCredential("lizhengi", "lizhengi", "password".toCharArray());
  19. System.out.println("Credentials ::" + credential);
  20. // 访问数据库
  21. MongoDatabase database = mongo.getDatabase("lizhengi");
  22. System.out.println("Connect to database successfully!");
  23. System.out.println("MongoDatabase info is : " + database.getName());
  24. // 检索集合
  25. MongoCollection<Document> collection = database.getCollection("lizhengi_test_3");
  26. System.out.println("chose collection : " + collection.getNamespace());
  27. // 删除集合
  28. collection.drop();
  29. System.out.println("drop collection : " + collection.getNamespace());
  30. // 检索集合列表
  31. for (String name : database.listCollectionNames()) {
  32. System.out.println(name);
  33. }
  34. }
  35. }

运行 Main 函数,返回以下结果:

Credentials ::MongoCredential{mechanism=null, userName=‘lizhengi’, source=‘lizhengi’, password=, mechanismProperties=}
Connect to database successfully!
MongoDatabase info is : lizhengi
chose collection : lizhengi.lizhengi_test_3

drop collection : lizhengi.lizhengi_test_3
lizhengi
lizhengi_test_2

发表评论

表情:
评论列表 (有 0 条评论,175人围观)

还没有评论,来说两句吧...

相关阅读

    相关 使用MongoDB

    是由JS引擎的限制造成的。 MapReduce的结果无法写入到一个被Sharding的Collection中,2.0版本对这个问题的解决好像也不彻底; 对于数组型的数据操作不够