四、java对mongo数据库增删改查操作
系列导航
五、mongo备份篇 mongoexport、mongoimport 以及mongodump、mongorestore
数据库连接通用类参考:三、java连接mongo数据库
操作mongo的方法有很多种,如下是我比较习惯的写法,查询是最复杂的请大家参考。
一、mongo新增
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | //单条插入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更新
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //更新一个字段 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删除
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //单条删除 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!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!