大家在工作中经常会使用mongoDB,接下来给大家带来两种Java连接mongoDB数据库的方式,以springboot项目为例。
引入jar包
<!--mongodb依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
方式一:mongoTemplate
这种方式也是最常用的,在xml或yml文件中配置好mongoDB的参数,如下
spring:
data: # mongodb 配置
mongodb:
uri: mongodb://root:123456@172.0.0.20:27018
host: 172.0.0.20
port: 27018
database: dbTest
username: root
password: 123456
在service类中引入MongoTemplate
类,直接调用里面的方法进行业务操作。
@Autowired
private MongoTemplate mongoTemplate;
常用的使用方法 其中 export_conf :表名
(1)新增/保存
mongoTemplate.insert(实体类,"表名称");
(2)查询
Query query = new Query();
query.addCriteria(Criteria.where("export_tb").is(exportTb));
mongoTemplate.findOne(query, ExportConf.class);
(3)修改
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(exportConf.getId()));
Update update = new Update();
update.set("export_duration",exportConf.getExportDuration());
update.set("export_db",exportConf.getExportDb());
update.set("export_tb",exportConf.getExportTb());
update.set("export_time",exportConf.getExportTime());
update.set("exprot_dir",exportConf.getExprotDir());
update.set("save_duration",exportConf.getSaveDuration());
mongoTemplate.updateFirst(query,update,"export_conf");
(4)修改内嵌文档
//数据结构
{
"_id" : ObjectId("6066c676f96c9a3318062af4"),
"brocastConfigs" : [
{
"statusDesc" : "故障1",
"faultStatusCode" : "900090100000",
"broadcastType" : "broadcastType_2",
"broadcastForm" : "broadcastForm_1",
"broadcastConent" : "故障1",
"id" : "588e9f0a-7573-40ef-9d8f-70ca34446e9a"
},
{
"statusDesc" : "故障2",
"faultStatusCode" : "900090000000",
"broadcastType" : "broadcastType_2",
"broadcastForm" : "broadcastForm_1",
"broadcastConent" : "故障2",
"id" : "b7470531-4048-4ad1-b0c8-51d72c8d7d5e"
}
],
"broadcastClass" : "1",
"wfCode" : "FF00"
}
Query query = Query.query(Criteria.where("_id").is(_id).and("brocastConfigs.id").is(id));
Update update = new Update();
update.set("brocastConfigs.$", childMap);
UpdateResult updateResult = mongoTemplate.updateFirst(query, update, tableName);
long matchedCount = updateResult.getMatchedCount();
(5)删除内嵌文档其中一条数据
//如果内嵌文档中只有一条数据,那么则直接删除主键_id的数据,不能采用以下方式。
Query query = new Query(Criteria.where("brocastConfigs.id").is(id));
Update update = new Update();
Document doc = new Document();
doc.put("id",id);
update.pull("brocastConfigs",doc);
mongoTemplate.updateMulti(query,update, tableName);
方式二:mongoClient
MongoCredential credential = MongoCredential.createCredential("root", "数据库名称", "123456".toCharArray());
MongoClient mongoClient = new MongoClient(new ServerAddress("IP",port),Arrays.asList(credential));
MongoCollection<Document> collection = null;
Document document = null;
//获取所需集合
collection = mongoClient.getDatabase("库名").getCollection("表名");
//根据字段名获取集合中最新一条数据
document = collection.find().sort(descending("字段")).first();
System.out.println(document.toJson());
//查询两个日期之间的数据
FindIterable<Document> iter = collection.find(Filters.and(Filters.gte(column, startDate),Filters.lte(column, endDate)));
更多查询参考:mongoDB高级查询