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

系列导航

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

二、mongo集群搭建

三、java连接mongo数据库

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

posted @ 2021-08-24 19:42  万笑佛  阅读(378)  评论(0编辑  收藏  举报