第27章 MongoDB Java教程

本教程介绍了如何在Java环境中配置MongoDBJDBC驱动,包括连接数据库、创建集合、插入、查询、更新和删除文档的基本步骤。示例代码详细展示了MongoDBJavaAPI的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第27章 MongoDB Java教程

环境配置

在 Java 程序中如果要使用 MongoDB,大王需要确保已经install 了 Java 环境及 MongoDB JDBC 驱动。

本章节实例适合 Mongo 3.x 以上版本。

大王可以参考本站的Java教程来install Java程序。现在让咱们来检测大王是否install 了 MongoDB JDBC 驱动。


连接database

连接database,大王需要指定database name称,如果指定的database不存在,mongo会自动创建database。

连接database的Java代码如下:


    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
           // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
           
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
           System.out.println("Connect to database successfully");
            
          }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
         }
       }
    }

现在,让咱们来编译运行程序并连接到database mycol。

大王可以根据大王的实际环境改变 MongoDB JDBC 驱动的路径。

本实例将 MongoDB JDBC 启动包 mongo-java-driver-3.2.2.jar 放在本地目录下:


    $ javac -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC.java
    $ java -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC
    Connect to database successfully
    Authentication: true

本实例中 Mongo database无需用户名password 验证。如果大王的 Mongo 需要验证用户名及password ,可以使用以下代码:


    import java.util.ArrayList;  
    import java.util.List;  
    import com.mongodb.MongoClient;  
    import com.mongodb.MongoCredential;  
    import com.mongodb.ServerAddress;  
    import com.mongodb.client.MongoDatabase;  
      
    public class MongoDBJDBC {  
        public static void main(String[] args){  
            try {  
                //连接到MongoDB服务 如果是远程连接可以替换“localhost”为server 所在IP地址  
                //ServerAddress()两个参数分别为 server 地址 和 端口  
                ServerAddress serverAddress = new ServerAddress("localhost",27017);  
                List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
                addrs.add(serverAddress);  
                  
                //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 database name称 password   
                MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  
                List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
                credentials.add(credential);  
                  
                //通过连接认证获取MongoDB连接  
                MongoClient mongoClient = new MongoClient(addrs,credentials);  
                  
                //连接到database  
                MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
                System.out.println("Connect to database successfully");  
            } catch (Exception e) {  
                System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
            }  
        }  
    }


创建集合

咱们可以使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集合

代码片段如下:


    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
          // 连接到 mongodb 服务
          MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
             
           
          // 连接到database
          MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
          System.out.println("Connect to database successfully");
          mongoDatabase.createCollection("test");
          System.out.println("集合创建成功");
            
          }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
         }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合创建成功


获取集合

咱们可以使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合

代码片段如下:


    import org.bson.Document;
    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
           // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
           
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
           System.out.println("Connect to database successfully");
          
           MongoCollection<Document> collection = mongoDatabase.getCollection("test");
           System.out.println("集合 test 选择成功");
          }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
         }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合 test 选择成功


插入文档

咱们可以使用com.mongodb.client.MongoCollection类的 insertMany() 方法来插入一个文档

代码片段如下:


    import java.util.ArrayList;
    import java.util.List;
    import org.bson.Document;
    
    import com.mongodb.MongoClient;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
             // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
             
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
             System.out.println("Connect to database successfully");
             
             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
             System.out.println("集合 test 选择成功");
             //插入文档  
             /** 
             * 1. 创建文档 org.bson.Document 参数为key-value的格式 
             * 2. 创建文档集合List<Document> 
             * 3. 将文档集合插入database集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
             * */
             Document document = new Document("title", "MongoDB").  
             append("description", "database").  
             append("likes", 100).  
             append("by", "Fly");  
             List<Document> documents = new ArrayList<Document>();  
             documents.add(document);  
             collection.insertMany(documents);  
             System.out.println("文档插入成功");  
          }catch(Exception e){
             System.err.println( e.getClass().getName() + ": " + e.getMessage() );
          }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合 test 选择成功
    文档插入成功


检索所有文档

咱们可以使用 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档。

此方法return 一个游标,所以大王需要遍历这个游标。

代码片段如下:


    import org.bson.Document;
    import com.mongodb.MongoClient;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
             // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
             
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
             System.out.println("Connect to database successfully");
             
             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
             System.out.println("集合 test 选择成功");
             
             //检索所有文档  
             /** 
             * 1. 获取迭代器FindIterable<Document> 
             * 2. 获取游标MongoCursor<Document> 
             * 3. 通过游标遍历检索出的文档集合 
             * */  
             FindIterable<Document> findIterable = collection.find();  
             MongoCursor<Document> mongoCursor = findIterable.iterator();  
             while(mongoCursor.hasNext()){  
                System.out.println(mongoCursor.next());  
             }  
          
          }catch(Exception e){
             System.err.println( e.getClass().getName() + ": " + e.getMessage() );
          }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合 test 选择成功
    Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=100, by=Fly}}


更新文档

大王可以使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档。

代码片段如下:


    import org.bson.Document;
    import com.mongodb.MongoClient;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
             // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
             
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
             System.out.println("Connect to database successfully");
             
             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
             System.out.println("集合 test 选择成功");
             
             //更新文档   将文档中likes=100的文档修改为likes=200   
             collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));  
             //检索查看结果  
             FindIterable<Document> findIterable = collection.find();  
             MongoCursor<Document> mongoCursor = findIterable.iterator();  
             while(mongoCursor.hasNext()){  
                System.out.println(mongoCursor.next());  
             }  
          
          }catch(Exception e){
             System.err.println( e.getClass().getName() + ": " + e.getMessage() );
          }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合 test 选择成功
    Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=200, by=Fly}}


删除第一个文档

要删除集合中的第一个文档,首先大王需要使用com.mongodb.DBCollection类中的 findOne()方法来获取第一个文档,然后使用remove 方法删除。

代码片段如下:


    import org.bson.Document;
    import com.mongodb.MongoClient;
    import com.mongodb.client.FindIterable;
    import com.mongodb.client.MongoCollection;
    import com.mongodb.client.MongoCursor;
    import com.mongodb.client.MongoDatabase;
    import com.mongodb.client.model.Filters;
    
    public class MongoDBJDBC{
       public static void main( String args[] ){
          try{   
             // 连接到 mongodb 服务
             MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    
             // 连接到database
             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
             System.out.println("Connect to database successfully");
    
             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
             System.out.println("集合 test 选择成功");
    
             //删除符合条件的第一个文档  
             collection.deleteOne(Filters.eq("likes", 200));  
             //删除所有符合条件的文档  
             collection.deleteMany (Filters.eq("likes", 200));  
             //检索查看结果  
             FindIterable<Document> findIterable = collection.find();  
             MongoCursor<Document> mongoCursor = findIterable.iterator();  
             while(mongoCursor.hasNext()){  
               System.out.println(mongoCursor.next());  
             }  
               
          }catch(Exception e){
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
         }
       }
    }

编译运行以上程序,输出结果请在输出结果查看


    Connect to database successfully
    集合 test 选择成功

更多操作可以参考:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/

参考文档:http://blog.csdn.net/ererfei/article/details/50857103

本专栏所有文章

第1章 MongoDB 教程第2章 NoSQL 简介教程
第3章 MongoDB 简介教程第4章 Windows MongoDB教程
第5章 Linux MongoDB教程第6章 OSX MongoDB教程
第7章 MongoDB 概念解析教程第8章 MongoDB 连接教程
第9章 MongoDB 创建数据库教程第10章 MongoDB 删除数据库教程
第11章 MongoDB 创建集合教程第12章 MongoDB 删除集合教程
第13章 MongoDB 插入文档教程第14章 MongoDB 更新文档教程
第15章 MongoDB 删除文档教程第16章 MongoDB 查询文档教程
第17章 MongoDB 条件操作符教程第18章 MongoDB $type 操作符教程
第19章 MongoDB Limit与Skip方法教程第20章 MongoDB 排序教程
第21章 MongoDB 索引教程第22章 MongoDB 聚合教程
第23章 MongoDB 复制(副本集)教程第24章 MongoDB 分片教程
第25章 MongoDB 备份与恢复教程第26章 MongoDB 监控教程
第27章 第27章 MongoDB Java教程教程第28章 MongoDB PHP 扩展教程
第29章 MongoDB PHP教程第30章 MongoDB PHP7教程
第31章 Node.js MongoDB教程第32章 MongoDB 关系教程
第33章 MongoDB 数据库引用教程第34章 MongoDB 覆盖索引查询教程
第35章 MongoDB 查询分析教程第36章 MongoDB 原子操作教程
第37章 MongoDB 高级索引教程第38章 MongoDB 索引限制教程
第39章 MongoDB ObjectId教程第40章 MongoDB Map Reduce教程
第41章 MongoDB 全文检索教程第42章 MongoDB 正则表达式教程
第43章 MongoDB 管理工具教程第44章 MongoDB GridFS教程
第45章 MongoDB 固定集合教程第46章 MongoDB 自动增长教程

寄语

本文有榴莲酱CSDN原创,欢迎点赞、转载,博客地址:https://blog.csdn.net/qq441540598

  • 教养中寄寓着极大的向往——对美好和光明的向往。它甚至还有一个更大的向往——使美好和光明战胜一切的向往。
  • 世间的美好远比你看到的美好,你所经历的苦难远比你意识到的轻。
  • 生命不允许脆弱,胜利才是判断善恶的唯一标准。我军的信念是不择手段打败敌人。
  • 任何事情都应该去尝试一下,不同的选择,不同的命运。多么忙不重要,忙什么才重要,人生易老,谁也耗不起。心态当若兰,凡事都能看得通透;性情当似梅,学会在命运的冬季艳丽地盛开;意志当如水,你能包容多少,终会收获多少。
  • 接受自己的失败,总比接受别人的失败轻易。自己的失败总就是有理由的,譬如,时不我与,对手太阴险等。别人的失败却就是活该。接受自己的成功比接受别人的成功轻易。接受自己的软弱比接受别人的软弱轻易。自己软弱,就是由于很多人需要自己照顾,所以不能随便逞强。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

榴莲酱csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值