• MongoDB Java操作


    根据老师要求,根据实验报告所给出的源码进行MongoDB的java操作实现。

    参考:MongoDB|菜鸟教程;林子雨大数据研究室;


    实验环境:

    1Linux CentOS 6

    2jdk-1.8.0

    3mongodb-linux-x86_64-3.4

    4windows eclipse

    实验原理

    Java驱动是MongoDB最早的驱动。它已经用于生产环境多年,而且非常稳定,是企业开发的首选。

    要在Java应用中访问和使用MongoDB,需要使用Java MongoDB驱动程序。Java MongoDB驱动程序是一个库,它提供了多个对象,供使用者连接数据库,进而查找和操作集合中的对象,这些对象分别表示MongoDB服务器连接、数据库、集合、游标和文档,提供了在Java应用程序中集成MongoDB数据库中的数据所需的功能。

    Java对象MongoClient提供了连接到MongoDB服务器和访问数据库的功能。要在应用程序中实现MongoDB,首先要创建一个MongoClient对象实例,然后就可使用它来访问数据库。


    实验目的:

    1、了解使用Java操作MongoDB的流程

    2、学习编写Java操作MongoDB的代码


    实验内容

    1.编写Java代码连接MongoDB数据库。

    2.编写Java代码在MongoDB中创建集合。

    3.编写Java代码在MongoDB中获取集合。

    4.编写Java代码在MongoDB中插入文档。

    5.编写Java代码在MongoDB中检索所有文档。

    6.编写Java代码在MongoDB中更新文档。

    7.编写Java代码在MongoDB中删除文档。 


    实验步骤

    MongoDB环境搭建:

    参照这篇博客进行安装:Centos环境下安装mongoDB

    注:如果在安装过程中出现以下问题,请通过这些办法进行解决

    1、出现有安装失败的问题(提醒 安装失败 或者有 GPG key retrieval failed: [Errno 14] problem making ssl connection

    解决方法一:更换MongoDB版本

    解决方法二:重新进入创建的仓库文件 vi /etc/yum.repos.d/mongodb-org-3.4.repo,将 gpgcheck=1 改成 gpgcheck=0(或者在刚开始安装的时候就把他设置成0)

    2、出现/etc/yum.repos.d/CentOS6-Base-163.repo: open for write: permission denied

    首先备份/etc/yum.repos.d/CentOS-Base.repo

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

    下载对应的CentOS版本的版本repo文件, 放入/etc/yum.repos.d/

    • CentOS5 http://mirrors.163.com/.help/CentOS5-Base-163.repo
    • CentOS6 http://mirrors.163.com/.help/CentOS6-Base-163.repo

    然后运行yum makecache生成缓存,重新安装。


    驱动包下载

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

    下载最新的jar包,Build Path到项目中(确保下载的jar包是最新版的) 


    API实现

    1、创建java project ,名称为mongodb ;创建包 mongo

    2、创建MongoDB连接(Mimalianjie.java)

    按照上面的教程安装之后,默认是没有用户密码的,可以使用这种方式进行连接。

     1 import com.mongodb.MongoClient;
     2 import com.mongodb.client.MongoDatabase;
     3 
     4 public class Mimalianjie{
     5    public static void main( String args[] ){
     6       try{   
     7        // 连接到 mongodb 服务
     8          MongoClient mongoClient = new MongoClient( "192.168.57.128" , 27017 );
     9        
    10          // 连接到数据库
    11          MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
    12        System.out.println("Connect to database successfully");
    13         
    14       }catch(Exception e){
    15         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
    16      }
    17    }
    18 }

    如果你在安装之后,重新设置了密码,可以使用以下代码(下面的内容都以无密码为基础,有设置密码的参照下面的代码进行修改):

     1 import java.util.ArrayList;
     2 
     3 import com.mongodb.MongoClient;
     4 import com.mongodb.MongoCredential;
     5 import com.mongodb.ServerAddress;
     6 import com.mongodb.client.MongoDatabase;
     7 
     8 public class Mimalianjie {
     9     private static MongoClient mongoClient;
    10     private static MongoDatabase mongoDatabase;
    11 
    12     public static void main(String[] args) {
    13         try {
    14             //连接mongodb
    15             ServerAddress serverAddress = new ServerAddress("192.168.57.128", 27017);
    16             ArrayList<ServerAddress> addresses = new ArrayList<ServerAddress>();
    17             addresses.add(serverAddress);
    18 
    19             MongoCredential credential = MongoCredential.createScramSha1Credential("root", "admin",
    20                     "strongs".toCharArray());
    21             ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();
    22             credentials.add(credential);
    23 
    24             mongoClient = new MongoClient(addresses, credentials);
    25 
    26             setMongoDatabase(mongoClient.getDatabase("databaseName"));
    27             System.out.println("Connect to database successfully");
    28         } catch (Exception e) {
    29             // TODO: handle exception
    30             System.out.println(e.getClass().getName() + ":" + e.getMessage());
    31         }
    32     }
    33 
    34     public static MongoDatabase getMongoDatabase() {
    35         return mongoDatabase;
    36     }
    37 
    38     public static void setMongoDatabase(MongoDatabase mongoDatabase) {
    39         Mimalianjie.mongoDatabase = mongoDatabase;
    40     }
    41 
    42 }

    结果出现以下内容说明连接成功:

     2、创建集合(Chuangjianjihe.java),在mycol库下创建test集合

     1 import com.mongodb.MongoClient;
     2 import com.mongodb.client.MongoDatabase;
     3 
     4 public class Chuangjianjihe {
     5     private static MongoClient mongoClient;
     6 
     7     public static void main(String[] args) {
     8         try {
     9             mongoClient = new MongoClient("192.168.57.128", 27017);
    10 
    11             // 连接到数据库
    12             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
    13             System.out.println("Connect to database successfully");
    14             mongoDatabase.createCollection("test");
    15             System.out.println("集合创建成功");
    16 
    17         } catch (Exception e) {
    18             System.err.println(e.getClass().getName() + ": " + e.getMessage());
    19         }
    20     }
    21 }

    出现以下结果说明创建成功:

    在mongo上进行验证,输出所有已经创建好的集合

    3、获取集合(Huoqujihe.java)

     1 import org.bson.Document;
     2 
     3 import com.mongodb.MongoClient;
     4 import com.mongodb.client.MongoCollection;
     5 import com.mongodb.client.MongoDatabase;
     6 public class Huoqujihe {
     7     private static MongoClient mongoClient;
     8     private static MongoCollection<Document> collection;
     9 
    10     public static void main(String[] args) {
    11         try {
    12             mongoClient = new MongoClient("192.168.57.128", 27017);
    13 
    14             // 连接到数据库
    15             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
    16             System.out.println("Connect to database successfully");
    17 
    18             setCollection(mongoDatabase.getCollection("test"));
    19             System.out.println("集合 test 选择成功");
    20         } catch (Exception e) {
    21             System.err.println(e.getClass().getName() + ": " + e.getMessage());
    22         }
    23     }
    24 
    25     public static MongoCollection<Document> getCollection() {
    26         return collection;
    27     }
    28 
    29     public static void setCollection(MongoCollection<Document> collection) {
    30         Huoqujihe.collection = collection;
    31     }
    32 }

    出现以下情况说明获取成功:

     4、插入文档(Charuwendang.java)

     1 import java.util.ArrayList;
     2 import java.util.List;
     3 
     4 import org.bson.Document;
     5 
     6 import com.mongodb.MongoClient;
     7 import com.mongodb.client.MongoCollection;
     8 import com.mongodb.client.MongoDatabase;
     9 
    10 public class Charuwendang {
    11     private static MongoClient mongoClient;
    12 
    13     public static void main(String[] args) {
    14         try{   
    15              mongoClient = new MongoClient( "192.168.57.128" , 27017 );
    16              
    17              // 连接到数据库
    18              MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
    19              System.out.println("Connect to database successfully");
    20              
    21              MongoCollection<Document> collection = mongoDatabase.getCollection("test");
    22              System.out.println("集合 test 选择成功");
    23              //插入文档  
    24              /** 
    25              * 1. 创建文档 org.bson.Document 参数为key-value的格式 
    26              * 2. 创建文档集合List<Document> 
    27              * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
    28              * */
    29              Document document = new Document("title", "MongoDB").  
    30              append("description", "database").  
    31              append("likes", 100).  
    32              append("by", "Fly");  
    33              List<Document> documents = new ArrayList<Document>();  
    34              documents.add(document);  
    35              collection.insertMany(documents);  
    36              System.out.println("文档插入成功");  
    37           }catch(Exception e){
    38              System.err.println( e.getClass().getName() + ": " + e.getMessage() );
    39           }
    40     }
    41 }

    出现以下情况说明插入成功:

    5、检索文档(Jiansuowendang.java)

     1 import org.bson.Document;
     2 
     3 import com.mongodb.MongoClient;
     4 import com.mongodb.client.FindIterable;
     5 import com.mongodb.client.MongoCollection;
     6 import com.mongodb.client.MongoCursor;
     7 import com.mongodb.client.MongoDatabase;
     8 
     9 public class Jiansuowendang {
    10 
    11     private static MongoClient mongoClient;
    12 
    13     public static void main(String[] args) {
    14         // TODO Auto-generated method stub
    15         try {
    16             mongoClient = new MongoClient("192.168.57.128", 27017);
    17 
    18             // 连接到数据库
    19             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
    20             System.out.println("Connect to database successfully");
    21 
    22             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
    23             System.out.println("集合 test 选择成功");
    24 
    25             // 检索所有文档
    26             /**
    27              * 1. 获取迭代器FindIterable<Document> 2. 获取游标MongoCursor<Document> 3.
    28              * 通过游标遍历检索出的文档集合
    29              */
    30             FindIterable<Document> findIterable = collection.find();
    31             MongoCursor<Document> mongoCursor = findIterable.iterator();
    32             while (mongoCursor.hasNext()) {
    33                 System.out.println(mongoCursor.next());
    34             }
    35 
    36         } catch (Exception e) {
    37             System.err.println(e.getClass().getName() + ": " + e.getMessage());
    38         }
    39     }
    40 
    41 }

    出现以下情况说明检索成功:

    6、更新文档(Gengxinwendang.java)

     1 import org.bson.Document;
     2 
     3 import com.mongodb.MongoClient;
     4 import com.mongodb.client.FindIterable;
     5 import com.mongodb.client.MongoCollection;
     6 import com.mongodb.client.MongoCursor;
     7 import com.mongodb.client.MongoDatabase;
     8 import com.mongodb.client.model.Filters;
     9 
    10 public class Gengxinwendang {
    11     private static MongoClient mongoClient;
    12 
    13     public static void main(String[] args) {
    14 
    15         try {
    16             mongoClient = new MongoClient("192.168.57.128", 27017);
    17 
    18             // 连接到数据库
    19             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
    20             System.out.println("Connect to database successfully");
    21 
    22             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
    23             System.out.println("集合 test 选择成功");
    24 
    25             // 更新文档 将文档中likes=100的文档修改为likes=200
    26             collection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes", 200)));
    27             // 检索查看结果
    28             FindIterable<Document> findIterable = collection.find();
    29             MongoCursor<Document> mongoCursor = findIterable.iterator();
    30             while (mongoCursor.hasNext()) {
    31                 System.out.println(mongoCursor.next());
    32             }
    33 
    34         } catch (Exception e) {
    35             System.err.println(e.getClass().getName() + ": " + e.getMessage());
    36         }
    37     }
    38 }

    出现以下内容说明更新成功:

    在mongoDb进行验证:

     

    7、删除文档(Shanchuwendang.java)

     1 import org.bson.Document;
     2 
     3 import com.mongodb.MongoClient;
     4 import com.mongodb.client.FindIterable;
     5 import com.mongodb.client.MongoCollection;
     6 import com.mongodb.client.MongoCursor;
     7 import com.mongodb.client.MongoDatabase;
     8 import com.mongodb.client.model.Filters;
     9 
    10 public class Shanchuwendang {
    11     private static MongoClient mongoClient;
    12 
    13     public static void main(String[] args) {
    14         try {
    15             mongoClient = new MongoClient("192.168.57.128", 27017);
    16 
    17             // 连接到数据库
    18             MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");
    19             System.out.println("Connect to database successfully");
    20 
    21             MongoCollection<Document> collection = mongoDatabase.getCollection("test");
    22             System.out.println("集合 test 选择成功");
    23 
    24             // 删除符合条件的第一个文档
    25             collection.deleteOne(Filters.eq("likes", 200));
    26             // 删除所有符合条件的文档
    27             collection.deleteMany(Filters.eq("likes", 200));
    28             // 检索查看结果
    29             FindIterable<Document> findIterable = collection.find();
    30             MongoCursor<Document> mongoCursor = findIterable.iterator();
    31             while (mongoCursor.hasNext()) {
    32                 System.out.println(mongoCursor.next());
    33             }
    34 
    35         } catch (Exception e) {
    36             System.err.println(e.getClass().getName() + ": " + e.getMessage());
    37         }
    38     }
    39 }

    出现以下情况说明删除成功:

     在MongoDB中进行验证,没有查询出任何结果:


     下一篇:MapReduce 处理简单数据 

  • 相关阅读:
    ASP.NET:关于.net中的runat
    javascript/dom:原生的JS写选项卡方法
    深入学习javascript:cookie
    javascript练习:8综合练习
    javascript/dom:对样式进行操作
    C#:form的窗体属性formborderstyle设置为none后就不能移动了
    javascript/dom:获取CSS值/getComputedStyle方法
    【玩转.Net MF – 04】远程屏幕截图
    .Net Micro Framework V4.1 beta 发布
    RFID技术在.Net Micro Framework中的应用
  • 原文地址:https://www.cnblogs.com/yandashan666/p/11787470.html
Copyright © 2020-2023  润新知