page contents

Java 教程——如何使用 MongoDB

本文讲述了Java教程——如何使用 MongoDB!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-08-1wUSMDxD64dd79c2bc725.png本文讲述了Java教程——如何使用 MongoDB!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

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

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

你可以参考本站的Java教程来安装Java程序。现在让我们来检测你是否安装了 MongoDB JDBC 驱动。

首先你必须下载mongo jar包,下载地址:https://mongodb.github.io/mongo-java-driver/, 请确保下载最新版本。

attachments-2023-08-bE6IlsZL64dd79873cbd9.png

你需要将 mongo-java-driver-3.2.2.jar (找到合适的版本)包含在你的 classpath 中。。

国内 mongodb-driver jar 下载地址:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

连接数据库

连接数据库,你需要指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库。

连接数据库的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 );

       

         // 连接到数据库

         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  

       System.out.println("Connect to database successfully");

        

      }catch(Exception e){

        System.err.println( e.getClass().getName() + ": " + e.getMessage() );

     }

   }

}

现在,让我们来编译运行程序并连接到数据库 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 数据库无需用户名密码验证。如果你的 Mongo 需要验证用户名及密码,可以使用以下代码:

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”为服务器所在IP地址  

            //ServerAddress()两个参数分别为 服务器地址 和 端口  

            ServerAddress serverAddress = new ServerAddress("localhost",27017);  

            List<ServerAddress> addrs = new ArrayList<ServerAddress>();  

            addrs.add(serverAddress);  

              

            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  

            MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  

            List<MongoCredential> credentials = new ArrayList<MongoCredential>();  

            credentials.add(credential);  

              

            //通过连接认证获取MongoDB连接  

            MongoClient mongoClient = new MongoClient(addrs,credentials);  

              

            //连接到数据库  

            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 );

         

       

      // 连接到数据库

      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 );

       

         // 连接到数据库

         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 );

         

         // 连接到数据库

         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. 将文档集合插入数据库集合中 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() 方法来获取集合中的所有文档。

此方法返回一个游标,所以你需要遍历这个游标。

代码片段如下:

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 );

         

         // 连接到数据库

         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 );

         

         // 连接到数据库

         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 );


         // 连接到数据库

         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 选择成功

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Java编程语言,推荐大家关注一个微信公众号:Java圈子。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Java入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2023-03-2AoKIjPQ64014b4ad30a3.jpg

  • 发表于 2023-08-17 09:37
  • 阅读 ( 215 )
  • 分类:Java开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章