(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
- (1)MongoDB的Java应用
- java中MongoDB的简单应用实例
- MongoDB在java上的应用
- mongodb系列之-mongodb gridfs分析(java应用)
- [MongoDB] Mongodb的初应用
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
- MongoDB的一些应用
- MongoDB的应用
- MongoDB的应用场景
- Mongodb的应用场景
- MongoDB的应用场景
- MongoDB的应用场景
- 【MongoDB&JAVA】MongoDB教程及mongo 3.1+ jar的JAVA应用实例
- java:Mongodb 分组统计应用group的使用(含场景)
- MongoDB 常用API接口在Java下的应用
- Java mongodb System.js 应用
- MongoDB JAVA API高级应用
- java应用MongoDB简单操作
- 垃圾回收基本算法
- 图像视觉领域部分开源代码
- 柏达通是真的吗?网店骗子骗局防不胜防
- http://blog.csdn.net/friendan/article/details/12226201
- Android屏幕方向的改变
- (1)MongoDB的Java应用
- java二十三节-InetAddress与URL
- 树莓派瞎玩~7~RPi.GPIOのWIKI文档
- 某中文核心期刊上非线性常微分方程边值问题的一个错误案例
- 第五周实践项目4————长方柱类
- MySQL数据库----索引篇部分(待增补)
- PAT-1014. 福尔摩斯的约会 (20)
- 设计模式系列之十二:单例模式
- JFinal学习--05Render