(1)MongoDB的Java应用

来源:互联网 发布:mysql 指定ip配置 编辑:程序博客网 时间:2024/04/30 15:33

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
关于MongoDB的学习,大家可以参考http://www.runoob.com/mongodb/mongodb-tutorial.html这个网站上的教程。

下面是我写的一个基础的应用Mongodb数据库的Java工具类:

import com.mongodb.MongoClient;import com.mongodb.MongoCredential;import com.mongodb.ServerAddress;import com.mongodb.client.FindIterable;import com.mongodb.client.MongoCollection;import com.mongodb.client.MongoCursor;import com.mongodb.client.MongoDatabase;import com.mongodb.client.MongoIterable;import com.mongodb.client.model.CreateCollectionOptions;import com.mongodb.client.model.Filters;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.bson.Document;import org.bson.conversions.Bson;/** * * @author Angela */public class MongoDBUtil {    public static void main(String args[]){        MongoClient client=connect();        //listDatabase(client);//         MongoDatabase db =getDatabase(client,"mycol");          //createCappedCollection(db,"p",10);        MongoCollection<Document> collection=getCollection(db,"test");        //dropCollection(collection);        //listCollection(db);        //select(collection,"likes",200);        //update(collection,"likes",200,100,false);        //delete(collection,"likes",100,false);        Map<String,Object> map1=new HashMap<String,Object>();        map1.put("title","MonogD");        List<Integer> list=new ArrayList<Integer>();        for(int i=0;i<5;i++){            list.add(i);        }        Map<String,Object> map2=new HashMap<String,Object>();        map2.put("title",list);        List<Map<String,Object>> maps=new ArrayList<Map<String,Object>>();        maps.add(map1);        maps.add(map2);        insert(collection,maps);        select(collection);        close(client);    }    /**本地连接mongodb服务器**/    public static MongoClient connect(){        MongoClient client = new MongoClient( "localhost" , 27017 );         System.out.println("成功连接到MongoDB服务器");        return client;    }    /**远程连接mongodb服务器,带用户名和密码认证**/    public static MongoClient connect(String IP,String userName,            String dbName,String password){        //ServerAddress()两个参数分别为 服务器地址 和 端口          ServerAddress serverAddress = new ServerAddress(IP,27017);          List<ServerAddress> addrs = new ArrayList<ServerAddress>();          addrs.add(serverAddress);          //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码          MongoCredential credential = MongoCredential.createScramSha1Credential(                userName, dbName, password.toCharArray());          List<MongoCredential> credentials = new ArrayList<MongoCredential>();          credentials.add(credential);          //通过连接认证获取MongoDB连接          MongoClient client = new MongoClient(addrs,credentials);          System.out.println("成功连接到MongoDB服务器");        return client;    }    /**连接到数据库**/    public static MongoDatabase getDatabase(MongoClient client,String dbName){        //连接数据库,你需要指定数据库名称,        //如果指定的数据库不存在,mongo会自动创建数据库。          MongoDatabase db = client.getDatabase(dbName);          System.out.println("成功连接到 "+dbName+" 数据库");        return db;     }    /**删除数据库**/    public static void dropDatabase(MongoClient client,String dbName){        client.dropDatabase(dbName);        System.out.println("成功删除了 "+dbName+" 数据库");    }    /**查看服务器内有多少个数据库**/    public static void listDatabase(MongoClient client){        MongoIterable<String> dbNames=client.listDatabaseNames();        int count=0;        System.out.println("服务器中有");        for(String dbName: dbNames){            System.out.println(dbName);            count++;        }        System.out.println("共"+count+"个数据库");    }    /**在db数据库上创建集合**/    public static void createCollection(MongoDatabase db,String collectionName){         //使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集合         db.createCollection(collectionName);         System.out.println(collectionName+"集合创建成功");    }    /**     * 创建固定集合     * @param db 数据库     * @param collectionName 集合名     * @param sizeInBytes 集合字节大小,一般为10000     */    public static void createCappedCollection(MongoDatabase db,            String collectionName,long sizeInBytes){        //使用 com.mongodb.client.MongoDatabase 类中的        //createCollection(String collectionName,CreateCollectionOptions cco)来创建集合        CreateCollectionOptions options=new CreateCollectionOptions();        options=options.capped(true);   //设置为固定集合        options=options.sizeInBytes(sizeInBytes); //设置集合的字节大小        db.createCollection(collectionName,options);        System.out.println(collectionName+"固定集合创建成功");    }    /**     * 创建固定集合     * @param db 数据库     * @param collectionName 集合名     * @param sizeInBytes 集合字节大小,一般为10000     * @param maxDocuments 集合中文档的个数     */    public static void createCappedCollection(MongoDatabase db,            String collectionName,long sizeInBytes,long maxDocuments){        //使用 com.mongodb.client.MongoDatabase 类中的        //createCollection(String collectionName,CreateCollectionOptions cco)来创建集合        CreateCollectionOptions options=new CreateCollectionOptions();        options.capped(true);//设置为固定集合        options=options.sizeInBytes(sizeInBytes); //设置集合的字节大小        options.maxDocuments(maxDocuments); //设置文档个数        db.createCollection(collectionName);        System.out.println(collectionName+"固定集合创建成功");    }    /**获取db数据库的collectionName集合**/    public static MongoCollection<Document> getCollection(            MongoDatabase db,String collectionName){        //使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合         MongoCollection<Document> collection = db.getCollection(collectionName);         System.out.println("集合 "+collectionName+" 选择成功");         return collection;    }    /**列举db中的集合**/    public static void listCollection(MongoDatabase db){        MongoIterable<String> collectionNames=db.listCollectionNames();        int count=0;        System.out.println(db+"数据库中有");        for(String collectionName: collectionNames){            System.out.println(collectionName);            count++;        }        System.out.println("共"+count+"个集合");    }    /**删除集合**/    public static void dropCollection(MongoCollection<Document> collection){         collection.drop();         System.out.println(collection.getNamespace().getCollectionName()                 +"集合删除成功");    }    /**插入一个文档**/    public static void insert(MongoCollection<Document> collection,            Map<String,Object> map){        //创建文档 org.bson.Document 参数为key-value的格式          Document document=new Document(map);         //使用com.mongodb.client.MongoCollection类的          //insertOne(Document) 方法来插入一个文档         collection.insertOne(document);         System.out.println("文档插入成功");      }    /**插入多个文档**/    public static void insert(MongoCollection<Document> collection,            List<Map<String,Object>> maps){         List<Document> documents = new ArrayList<Document>();          for(Map<String,Object> map: maps){             //1. 创建文档 org.bson.Document 参数为key-value的格式             Document document=new Document(map);             //2. 创建文档集合List<Document>              documents.add(document);          }         // 3. 使用com.mongodb.client.MongoCollection类的          //insertMany(List<Document>) 方法来插入多个文档           collection.insertMany(documents);          System.out.println("文档插入成功");      }    /**删除成功**/    public static void delete(MongoCollection<Document> collection,            String fieldName,Object value,boolean isAll){         if(isAll){             //删除所有符合条件的文档               collection.deleteMany(Filters.eq(fieldName, value));           }else{             //删除符合条件的第一个文档              collection.deleteOne(Filters.eq(fieldName, value));           }         System.out.println("文档删除成功");    }    /**查看所有文档**/    public static void select(MongoCollection<Document> collection){        //使用 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档。        //此方法返回一个游标,所以你需要遍历这个游标。         //检索所有文档           /**          * 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());           }      }    /**查看符合查找条件的所有文档**/    public static void select(MongoCollection<Document> collection,            String fieldName,Object value){         Bson bson=Filters.eq(fieldName, value);         FindIterable<Document> findIterable = collection.find(bson);           MongoCursor<Document> mongoCursor = findIterable.iterator();           while(mongoCursor.hasNext()){              System.out.println(mongoCursor.next());           }      }    /**更新文档**/    public static void update(MongoCollection<Document> collection,            String fieldName,Object oldValue,Object newValue,boolean isAll){        if(isAll){            //使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档。            collection.updateMany(Filters.eq(fieldName, oldValue), new Document(                 "$set",new Document(fieldName,newValue)));        } else{            collection.updateOne(Filters.eq(fieldName, oldValue), new Document(                 "$set",new Document(fieldName,newValue)));        }        System.out.println("文档更新成功");    }    /**关闭mongodb连接**/    public static void close(MongoClient client){        client.close();        System.out.println("成功关闭连接!");    }}
0 0
原创粉丝点击