java操作MongoDB
2015-10-16 00:00
531 查看
摘要: MongoDB java
1.添加mongoDB driver 工程使用maven构建,需要添加的依赖如下 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.0.2</version> </dependency>
package com.peter.mongo; import java.util.HashMap; import java.util.Map; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientOptions; import com.mongodb.MongoClientOptions.Builder; import com.mongodb.WriteConcern; 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 MongoDBConnenction { //使用MongoClient连接MongoDB server private static MongoClient mongoClient = null; private static final String IPADDRESS="127.0.0.1"; private static final int PORT = 27017; private static final String DATABASE="test"; private static String name="name"; private static String phone="phone"; private static String age="age"; public static MongoCollection<Document> getMongoConnection(String table){ mongoClient = new MongoClient(IPADDRESS, PORT); //获取数据库。如果数据库不存在,那么MongoDB会自动创建 MongoDatabase database = mongoClient.getDatabase(DATABASE); Builder options = new MongoClientOptions.Builder(); options.connectionsPerHost(300);// 连接池设置为300个连接,默认为100 options.connectTimeout(15000);// 连接超时,推荐>3000毫秒 options.maxWaitTime(5000); // options.socketTimeout(0);// 套接字超时时间,0无限制 options.threadsAllowedToBlockForConnectionMultiplier(5000);// 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。 options.writeConcern(WriteConcern.SAFE);// options.build(); return database.getCollection(table); } public static void main(String[] args) { Map<String, Object> userInfo = new HashMap<String, Object>(); userInfo.put(MongoDBConnenction.name, "liuzhiwei"); userInfo.put(MongoDBConnenction.phone, "18510248566"); userInfo.put(MongoDBConnenction.age, 19); //boolean save = save("peter", userInfo); //boolean update = update("peter"); //boolean delete = delete("peter"); //boolean count = getCount("peter"); //getPage("peter", 1, 3); getDataOr("peter"); mongoClient.close(); } /** * @Description: TODO 查询mongo的数据 * @param @param table * @param @param userInfo * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午5:40:22 * @throws */ public static boolean save(String table,Map<String, Object> userInfo){ try{ getMongoConnection(table).insertOne(new Document(userInfo)); FindIterable<Document> find = getMongoConnection(table).find(); for (Document document : find) { System.err.println(document.toJson()); System.err.println(document.size()); } }catch(Throwable e){ e.printStackTrace(); return false; } return true; } /** * @Description: TODO 更新mongo的数据 * @param @param table * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午5:39:54 * @throws */ public static boolean update(String table){ BasicDBObject newDocument =new BasicDBObject(); newDocument.put(MongoDBConnenction.name, "peter1314"); newDocument.put(MongoDBConnenction.phone, "00000000000"); newDocument.put(MongoDBConnenction.age, 115); try{ getMongoConnection(table).updateOne(Filters.eq(MongoDBConnenction.name, "peter1314"), new Document("$set", newDocument)); }catch(Exception e){ e.printStackTrace(); return false; } return true; } /** * @Description: TODO 删除数据 * @param @param table * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午5:39:33 * @throws */ public static boolean delete(String table){ try{ getMongoConnection(table).deleteOne(Filters.eq(MongoDBConnenction.name, "peter1314")); }catch(Exception e){ e.printStackTrace(); return false; } return true; } public static boolean getCount(String table){ try{ FindIterable<Document> find = getMongoConnection(table).find(Filters.eq(MongoDBConnenction.name, "peter1314")); for (Document document : find) { System.err.println(document.toJson()); System.err.println(document.size()); } }catch(Exception e){ e.printStackTrace(); return false; } return true; } /** * @Description: TODO mongoDB 数据库分页查询 * @param table * @param pageNo 当前页数 * @param pageSize 查询多少套数据 * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午3:16:21 * @throws */ public static MongoCursor<Document> getPage(String table,int pageNo,int pageSize){ Bson orderBy = new BasicDBObject("_id", 1); MongoCursor<Document> iterator = getMongoConnection(table).find().sort(orderBy).skip((pageNo - 1) * pageSize).limit(pageSize).iterator(); //分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,却只能望而兴叹 http://www.tuicool.com/articles/6vMrYv while(iterator.hasNext()){ Document next = iterator.next(); System.err.println(next.toString()); } return iterator; } /** * @Description: TODO(这里用一句话描述这个方法的作用) * @param @param table * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午4:01:05 * @throws */ public static MongoCursor<Document> getDataIn(String table){ BasicDBList values = new BasicDBList(); values.add(15); values.add(19); //select * from peter where age in(15,19) MongoCursor<Document> iterator = getMongoConnection(table).find(Filters.in("age", values)).iterator(); while(iterator.hasNext()){ Document next = iterator.next(); System.err.println(next.toString()); } return iterator; } /** * @Title: * @Description: TODO 使用or in 查询mongo数据 * @param @param table * @param @return * @return 返回类型 * @author chenwenning * @date 2015-10-16 下午5:27:19 * @throws */ public static MongoCursor<Document> getDataOr(String table){ BasicDBList values = new BasicDBList(); values.add(15); values.add(19); Iterable<Bson> filters = null; // select * from peter where age in(15,19) or name='zhaolibing' MongoCursor<Document> iterator = getMongoConnection(table).find(Filters.or(Filters.in("age", values),Filters.eq(MongoDBConnenction.name, "zhaolibing"))).iterator(); while(iterator.hasNext()){ Document next = iterator.next(); System.err.println(next.toString()); } return iterator; } }
相关文章推荐
- 【Monkey Run】MongoDB环境搭建
- MongoDB一次性能问题处理
- mongodb命令使用
- MongoDB的主从部署
- mongodb增删改查操作汇总
- mongodb数组与内嵌文档查询
- mongodb数据文件格式(一)
- 使用node+mongodb搭建简单个人博客——第一章遇到的问题
- MongoDB-Replica Set Read and Write
- Mongodb总结6-数据库启动、停止、备份等命令
- Mongodb总结6-数据库启动、停止、备份等命令
- MongoDB-Replica Set Deployment Architecture
- Mongodb总结5-通过装饰模式,用Mongodb解决Hbase的不稳定问题
- Mongodb总结5-通过装饰模式,用Mongodb解决Hbase的不稳定问题
- Mongodb总结5-通过装饰模式,用Mongodb解决Hbase的不稳定问题
- Mongodb总结4-Spring环境使用Mongodb
- Mongodb总结4-Spring环境使用Mongodb
- Mongodb总结4-Spring环境使用Mongodb
- mongoDB基本操作
- MongoDB--集群