1.首先需要在service层中引入
相当于@Autowired
@Value("${mongo.taskLog.database}")
private String dataBase;
@Value("${mongo.taskLog.collection}")
private String collectionName;
2.在Service的方法中直接创建连接,存储的例子。
//连接数据库
MongoClient mongoClient = new MongoClient( "172.26.xxx.xxx" , 27017 );
MongoDataBase mongoDataBase = MongoManager.getDB(dataBase);
MongoCollection<Document> mongoCollection = mongoDatabase.getCollection(collectionName);
Document document = new Document(); //mongo的存取都是Document形式的。
document.put("字段名称",属性值);
mongoCollection.insertOne(document);
3.查询。
public List<document> listInfo () { //根据返回的list是实体类还是document来定义返回值类型
//连接数据库
MongoClient mongoClient = new MongoClient( "192.168.0.xxx" , 27017 );
MongoDataBase mongoDataBase = MongoManager.getDB(dataBase);
MongoCollection<Document> mongoCollection = mongoDatabase.getCollection(collectionName);
//new 一个查询类
ParamQuery query = new ParamQuery;
//创建一个list用于返回document,想返回实体类就不用创建
List<Document> list = new ArrayList<>();
//new一个list用于存放封装的实体类,想直接返回document就不用创建
List<Pojo> listPojo = new ArrayList<>();
//根据info_id查询
query.put("info_id",11);
//根据日期时间查询
query.put("time",new ParamQuery("$gte","2019-06-17 12:00:00").append("$lte","2019-06-18 12:00:00"));
//模糊查询
Pattern pattern =Pattern.compile("^.*王.*$",Pattern.Case_INSENSITIVE);
query.put("user_name",pattern);
//查询执行,sort是排序,根据什么排序,skip是分页,从0条查到10条。
FindIterable<Document> findIterable = mongoCollection.find(query).sort(update_time).skip(0).limit(10);
MongoCursor<Document> mongoCurse = findIterable .iterator();
while(mongoCurse.hasNext()){
Document document =mongoCurse.next();
//设置查询出来的时间格式,如果想返回document,做到这步就可以直接返回list
document.put("update_time" , new SimpleDateFormat("yyy-MM-dd HH:mm:ss").format(new Date(document.getLong("update_time"))));
/* //如果想封装成对象就按照以下的操作(/* */里面的内容)
//new一个实体类
Pojo pojo = new Pojo();
//把查询出来的结果转成jsonObject
JSONObject jsonObject = JSONObject(document.toJson().toString);
pojo.setUserName(jsonObject .getString("user_name"));
pojo.setUserAddress(jsonObject .getString("user_address"));
listPojo.add(Pojo); //注意返回值的集合需要更改*/
list.add(document); //直接返回document的list
}
return list; //controller 层接收就可以了,document的list
// return listPojo; //返回的是实体类的集合
}