java执行mongodb增删改查
获取Mongo客户端创建链接
/**
* 构建一个mongClient
* @param dataSourceId
* @return
*/
private MongoClient build(String dataSourceId){
SysDataBase sysDataBase = sysDataBaseService.selectById(dataSourceId);
int maxActive = sysDataBase.getMaxActive() == null ? 10 : sysDataBase.getMaxActive() <= 0 ? 10 :sysDataBase.getMaxActive();
MongoClientOptions clientOptions = new MongoClientOptions.Builder()
.connectionsPerHost(maxActive) // 最大连接数
.socketTimeout(6000).build(); // 连接超时时间 60s
ServerAddress serverAddress = new ServerAddress(sysDataBase.getHost(),Integer.valueOf(sysDataBase.getPort()));
if (StringUtils.isEmpty(sysDataBase.getUsername()) || StringUtils.isEmpty(sysDataBase.getPassword()) || StringUtils.isEmpty(sysDataBase.getDatabaseName())) {
return new MongoClient(serverAddress);
}else{
MongoCredential credential = MongoCredential.createCredential(sysDataBase.getUsername(),
sysDataBase.getDatabaseName(),sysDataBase.getPassword().toCharArray());
return new MongoClient(serverAddress,credential,clientOptions);
}
}
SysDataBase用到的字段说明
private String id; // 主键
private String name; // 数据源名称
private String host; // 数据库地址
private String port; // 端口
private String databaseName; // 数据库名
private String code; // 数据库编码
private String username; // 用户名
private String password; // 密码
private Integer maxActive; // 最大连接数
新增数据
//1.获取MongoDatabase
MongoDatabase mongoDatabase = mongoDBDataSource.getMongoDatabase("e845ecbd1829246f26167d6c45c0bb6f");
//2.创建需要新增的数据
Document document = new Document();
document.put("mc","初次插入mc");
document.put("name","初次插入name");
//3.插入数据
mongoDatabase.getCollection("col").insertOne(document);
更新数据
//1.获取MongoDatabase
MongoDatabase database = mongoDBDataSource.getMongoDatabase(sysDataBase.getId());
//2.获取更新条件
BasicDBObject filter = new BasicDBObject();
filter.put("_id" , map.get("635fd378762cb0742c68b18e"));
//for (String mayJoyKey : mayJoyKeys) {
// filter.put(mayJoyKey , map.get(mayJoyKey));
//}
//3.需要更新数据
Document doc = new Document();
doc.append("mc","我是修改后的mc");
doc.append("name","我是修改后的name");
Bson update = new Document("$set",doc);
mongoDatabase.getCollection("col").updateOne(filter,update);
删除数据
//1.获取数据库连接
MongoDatabase mongoDatabase = mongoDBDataSource.getMongoDatabase("e845ecbd1829246f26167d6c45c0bb6f");
//2.需要删除的数据的条件
BasicDBObject delObj = new BasicDBObject();
//mongodb的_id是ObjectId,所以需要这样写,普通字段可以直接delObj.put("mc","张三");根据mc为张三的来删除数据
delObj.put("_id",new ObjectId( "6358da3cf3760000e9006280"));
mongoDatabase.getCollection("col").deleteOne(delObj);
查询数据
MongoDatabase mongoDatabase = mongoDBDataSource.getMongoDatabase("e845ecbd1829246f26167d6c45c0bb6f");
BasicDBObject queryCond = new BasicDBObject();
//模糊查询$regex
queryCond.put("name",new BasicDBObject("$regex","3"));
//精确查询
queryCond.put("mc","MongoDB 教程");
//区间查询
queryCond.put("temp", new BasicDBObject("$gte", 14).append("$lte", 16));
//或操作 mc为MongoDB 教程1 或者 name为MongoDB 教程4 的数据
BasicDBList values1 = new BasicDBList();
values.add(new BasicDBObject("mc","MongoDB 教程1"));
values.add(new BasicDBObject("name", "MongoDB 教程4"));
queryCond.put("$or",values1);
//排序,-1降序、1升序
BasicDBObject orderby = new BasicDBObject();
orderby.put("mc","-1");
//查询数据并遍历输出queryCond为查询条件、orderby为排序条件
//limit和skip用来组合分页
//.limit(): 取多少个文档
//.skip() : 跳过多少个文档
mongoDatabase.getCollection("col").find(queryCond).sort(orderby)
.skip(pagingProgram.getSize()*(pagingProgram.getIndex()-1))
.limit(pagingProgram.getSize()).forEach((Block<? super Document>) data->{
data.keySet().forEach(a->{
System.out.println(a);
});
});