四、java对mongo数据库增删改查操作
系列导航
五、mongo备份篇 mongoexport、mongoimport 以及mongodump、mongorestore
数据库连接通用类参考:三、java连接mongo数据库
操作mongo的方法有很多种,如下是我比较习惯的写法,查询是最复杂的请大家参考。
一、mongo新增
//单条插入mongo库中
public int insertTrack() {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
BasicDBObject obj = new BasicDBObject();
obj.append("id", "1");
obj.append("name", "张三");
picContent.insertOne(obj);
return result;
}
//批量添加
public int insertMany( ) {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
ArrayList mongoList = new ArrayList();
BasicDBObject obj1 = new BasicDBObject();
obj.append("id", "1");
obj.append("name", "张三");
BasicDBObject obj2 = new BasicDBObject();
obj.append("id", "2");
obj.append("name", "李四");
mongoList.add(obj1);
mongoList.add(obj2);
picContent.insertMany(mongoList);
mongoList.clear();
return result;
}
三、mongo更新
//更新一个字段
public void updateTrack() {
MongoDatabase database = MongoDbDao.getDb("etc_data");
MongoCollection picContent = database.getCollection("new_trace", BasicDBObject.class);
BasicDBObject whereSql = new BasicDBObject("_id", new ObjectId("6124b4c72b2ea593ccdd3e60"));
BasicDBObject updateNewOneSql = new BasicDBObject("$set", new BasicDBObject("address", "11111"));
picContent.updateOne(whereSql,updateNewOneSql) ;
}
//更新多个字段
public void updateManyColumn() {
MongoDatabase database = MongoDbDao.getDb("etc_data");
MongoCollection picContent = database.getCollection("new_trace", BasicDBObject.class);
BasicDBObject whereSql = new BasicDBObject("_id", new ObjectId("6124b4c72b2ea593ccdd3e60"));
BasicDBObject updateColumn = new BasicDBObject("xm", "张三")
.append("sex", "男")
.append("age", 13);
BasicDBObject updateNewOneSql = new BasicDBObject("$set", updateColumn);
picContent.updateOne(whereSql,updateNewOneSql) ;
}
四、mongo查询
//综合的查询方法包括如何设置查询条件、返回的数据项、排序规则,返回的数据条数 private void selectTrack() { MongoDatabase database = MongoDbDao.getDb("testDb"); //ReadPreference.secondaryPreferred() 意思为在集群模式下查寻从库, MongoCollection<BasicDBObject> collection = database.getCollection("oiltrack", BasicDBObject.class).withReadPreference(ReadPreference.secondaryPreferred()); String trackId = "123"; String idNum = "123456"; Timestamp createDateTime = getTimestamp(); //设置查询条件 BasicDBObject idCondObj = null; BasicDBList idBasicDBList = new BasicDBList(); idBasicDBList.add(new BasicDBObject("idNum", idNum)); //相等条件 idBasicDBList.add(new BasicDBObject("trackId", new BasicDBObject("$ne", trackId)));//不相等条件 idBasicDBList.add(new BasicDBObject("createDateTime", new BasicDBObject("$gt", new Date(createDateTime.getTime() - 24 * 60 * 60 * 1000))));//时间大于使用 idBasicDBList.add(new BasicDBObject("createDateTime", new BasicDBObject("$lt", new Date(createDateTime.getTime()))));//时间小于使用 idCondObj = new BasicDBObject().append(QueryOperators.AND, idBasicDBList); //查询条件 //设置返回字段列表 BasicDBObject selectObj = new BasicDBObject("colum1", 1).append("colum2", 1).append("colum3", 1); //设置排序字段 BasicDBObject sortObj = new BasicDBObject(); sortObj.put("dateTime", 1); List<String> trackBeanTrackIdList = new ArrayList<String>(); ArrayList<BasicDBObject> idRetList = new ArrayList<BasicDBObject>(); //limit(10)只查询前十条,不需要可以去掉 collection.find(idCondObj).projection(selectObj).sort(sortObj).limit(10).into(idRetList); for (BasicDBObject tempValue : idRetList) { System.out.println(tempValue.getString("colum1")); System.out.println(tempValue.getString("colum2")); } } //查询mongo记录中某属性字段不存在的记录 private void selectExistsTrack() { MongoDatabase database = MongoDbDao.getDb("testDb"); //ReadPreference.secondaryPreferred() 意思为在集群模式下查寻从库, MongoCollection<BasicDBObject> collection = database.getCollection("oiltrack", BasicDBObject.class).withReadPreference(ReadPreference.secondaryPreferred()); //需要查询的字段 Map valueMap = new HashMap(); valueMap.put("_id", 1); valueMap.put("name", 1); BasicDBObject whereObj = new BasicDBObject(); //查询记录中没有date这个属性的记录 whereObj.put("date", new BasicDBObject("$exists", false)); //batchSize(100)很重要,如果数据量特别大不加这个执行中会报错,batchSize(100)意思是每次取出100条数据,循环结束再取100条 Iterator iterator = collection.find(whereObj).batchSize(100).projection(new BasicDBObject(valueMap)).iterator(); while (iterator.hasNext()) { BasicDBObject obj = (BasicDBObject) iterator.next(); String _id = obj.getString("_id"); System.out.println("_id:" + _id); } } //获取当前时间 public Timestamp getTimestamp() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(currentTime); Timestamp timestamp = Timestamp.valueOf(dateString); return timestamp; }
五、mongo删除
//单条删除
public int deleteOne() {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
BasicDBObject obj = new BasicDBObject();
obj.append("id", "1");
picContent.deleteOne(obj);
return result;
}
//批量删除
public int deleteMany() {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
BasicDBObject obj = new BasicDBObject();
obj.append("name", "张三");
picContent.deleteMany(obj);
return result;
}
资源丰富的的网盘资源:网盘资源大全! 推荐一个适合零基础学习SQL的网站:不用安装数据库,在线轻松学习SQL!
浙公网安备 33010602011771号