四、java对mongo数据库增删改查操作

系列导航

一、linux单机版mongo安装(带密码验证)

二、mongo集群搭建

三、java连接mongo数据库

四、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!

posted @   万笑佛  阅读(395)  评论(0编辑  收藏  举报
编辑推荐:
· 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 让容器管理更轻松!
点击右上角即可分享
微信分享提示