zoukankan      html  css  js  c++  java
  • 【MongoDB】5.MongoDB与java的简单结合

    1.首先 你的清楚你的MongoDB的版本是多少  就下载对应的架包

    下载地址如下:

    http://mongodb.github.io/mongo-java-driver/  

    2.新建一个项目  把架包扔进去,并Build path到你的项目下【如果用于测试,请如下 多用一个架包】

    3.新建一个MongoConnection类 用来获取MongoDB的连接对象:

     1 package com.mongo.util;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import com.mongodb.MongoClient;
     7 import com.mongodb.MongoCredential;
     8 import com.mongodb.ServerAddress;
     9 import com.mongodb.client.MongoDatabase;
    10 
    11 public class MongoConnection {
    12      
    13     /**
    14      * 需要验证用户名  密码的 MongoDB的连接方式   com.mongodb.MongoClient.getDatabase("数据库名")
    15      * @return
    16      */
    17     public MongoDatabase getConnection() {
    18          try {  
    19                 //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址  
    20                 //ServerAddress()两个参数分别为 服务器地址 和 端口  
    21                 ServerAddress serverAddress = new ServerAddress("localhost",27017);  
    22                 List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
    23                 addrs.add(serverAddress);  
    24                   
    25                 //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
    26                 MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  
    27                 List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
    28                 credentials.add(credential);  
    29                   
    30                 //通过连接认证获取MongoDB连接  
    31                 MongoClient mongoClient = new MongoClient(addrs,credentials);  
    32                   
    33                 //连接到数据库  
    34                 MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
    35                 System.out.println("连接成功");  
    36                 return mongoDatabase;
    37             } catch (Exception e) {  
    38                 System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
    39             }  
    40          return null;
    41     }
    42     
    43     /**
    44      * 不需要验证  用户名+密码  的获取连接的方式 com.mongodb.MongoClient.getDatabase("数据库名")
    45      * @return
    46      */
    47     public MongoDatabase getConnectionBasis(){
    48         try {
    49             //连接到mongodb服务
    50             MongoClient mongoClient = new MongoClient("localhost",27017);
    51             MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");
    52             System.out.println("连接成功");
    53             return mongoDatabase;
    54         } catch (Exception e) {
    55             System.out.println(e.getClass().getName()+":"+e.getMessage());
    56         }
    57         return null;
    58     }
    59     
    60 }
    View Code

    4.再建一个类 用来测试 你的增删改查

      1 package com.mongo.test;
      2 
      3 
      4 import java.text.SimpleDateFormat;
      5 import java.util.ArrayList;
      6 import java.util.List;
      7 
      8 import org.bson.Document;
      9 import org.junit.Test;
     10 
     11 import com.mongo.util.MongoConnection;
     12 import com.mongodb.client.FindIterable;
     13 import com.mongodb.client.MongoCollection;
     14 import com.mongodb.client.MongoCursor;
     15 import com.mongodb.client.MongoDatabase;
     16 import com.mongodb.client.model.Filters;
     17 
     18 public class MongoTest {
     19     
     20     MongoConnection connection = new MongoConnection();
     21     //连接到数据库
     22     MongoDatabase mongoDatabase = connection.getConnectionBasis();
     23     
     24     
     25     @Test
     26     public void test(){
     27         //createCollection();//创建   集合 一次就好
     28         MongoCollection<Document> collection = getCollection();
     29         insertDomcument(collection);
     30         findAll(collection);
     31         //delete(collection);
     32     }
     33     
     34     /**
     35      * 创建  集合【对应RDBMS 中的数据表】 com.mongodb.client.MongoDatabase.createCollection("集合名")
     36      */
     37     public void createCollection(){
     38         mongoDatabase.createCollection("testConllection");
     39         System.out.println("创建集合成功");
     40     }
     41     
     42     /**
     43      * 获取  集合【对应RDBMS 中的数据表】com.mongodb.client.MongoDatabase.getCollection("集合名")
     44      */
     45     public MongoCollection<Document> getCollection(){
     46         MongoCollection<Document>  collection = mongoDatabase.getCollection("testConllection");
     47         System.out.println("转换到指定集合");
     48         return collection;
     49     }
     50     
     51     /**
     52      * 插入  文档【对应RDBMS 中的一条数据】com.mongodb.client.MongoCollection<Document>.insertOne()/insertMany()
     53      */
     54     public void insertDomcument(MongoCollection<Document> collection){
     55         /** 
     56         * 1. 创建文档 org.bson.Document 参数为key-value的格式 
     57         * 2. 创建文档集合List<Document> 
     58         * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
     59         * */
     60         Document document = new Document();
     61         document.append("name", "走四方");
     62         document.append("age", 23);
     63         document.append("url", "www.baidu.com");
     64         
     65         List<Document> list = new ArrayList<Document>();
     66         list.add(document);
     67         
     68         collection.insertMany(list);
     69         System.out.println("插入文档成功");
     70         
     71         //插入 单条数据
     72         Document  t = new Document();
     73         t.append("name", "走什么");
     74         t.append("age", 26);
     75         t.append("url", "www.agen.cn");
     76         
     77         collection.insertOne(t);
     78         System.out.println("插入单条数据成功");
     79     }
     80     
     81     /**
     82      * 查询  所有文档【表内 数据】com.mongodb.client.MongoCollection<Document>.find()
     83      * 查询  本条数据的时间节点   _id采用ObjectId格式
     84      * 
     85      * ObjectId 是一个12字节 BSON 类型数据,有以下格式:
     86             前4个字节表示时间戳
     87             接下来的3个字节是机器标识码
     88             紧接的两个字节由进程id组成(PID)
     89             最后三个字节是随机数。
     90      */
     91     public void findAll(MongoCollection<Document> collection){
     92         /** 
     93         * 1. 获取迭代器FindIterable<Document> 
     94         * 2. 获取游标MongoCursor<Document> 
     95         * 3. 通过游标遍历检索出的文档集合 
     96         * */
     97          FindIterable<Document> findIterable = collection.find();
     98          MongoCursor<Document> mongoCursor = findIterable.iterator();
     99          while(mongoCursor.hasNext()){
    100              Document document = mongoCursor.next();
    101              System.out.println("MongoDB数据:"+document);
    102              System.out.println("本地时间:"+new SimpleDateFormat().format(document.getObjectId("_id").getDate()));
    103          }
    104     }
    105     
    106     /**
    107      * 更新   所有文档【表内  数据】com.mongodb.client.MongoCollection<Document>.updateMany()
    108      */
    109     public void update(MongoCollection<Document> collection){
    110         
    111         collection.updateMany(Filters.eq("age", 26), new Document("$set",new Document("age",100)));
    112         
    113         FindIterable<Document> findIterable = collection.find();
    114         MongoCursor<Document> cursor = findIterable.iterator();
    115         while (cursor.hasNext()) {
    116             System.out.println("更新后的MongoDB数据:"+cursor.next());
    117         }
    118     }
    119     
    120     
    121     /**
    122      * 删除  文档 com.mongodb.client.MongoCollection<Document>.deleteMany()/deleteOne()
    123      */
    124     public void delete(MongoCollection<Document> collection){
    125         // 删除符合条件的 第一个文档
    126         collection.findOneAndDelete(Filters.eq("age", 26));
    127         //删除符合条件的  所有文档
    128         collection.deleteMany(Filters.gte("age", 20));
    129         
    130         FindIterable<Document> findIterable = collection.find();
    131         MongoCursor<Document> cursor = findIterable.iterator();
    132         while(cursor.hasNext()){
    133             System.out.println("删除后的MongoDB数据:"+cursor.next());
    134         }
    135     }
    136     
    137     
    138     
    139     
    140     
    141 }
    View Code

    5.完成  自行研究

  • 相关阅读:
    asp.net mvc 中直接访问静态页面
    (转)asp.net文本编辑器(FCKeditor)
    (转)后缀为 ashx 与 axd 的文件有什么区别
    最全的ASP.NET开源CMS汇总
    打造属于自己的设计模式
    分布式文件系统应用(上篇 理论)
    结合项目实例 回顾传统设计模式(一)策略模式
    动态方法与动态代理(上篇)
    分布式文件系统应用(下篇 实践)
    关于领域驱动设计与面向数据库设计
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/6168860.html
Copyright © 2011-2022 走看看