系列导航

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

二、mongo集群搭建

三、java连接mongo数据库

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

五、mongo备份篇 mongoexport、mongoimport 以及mongodump、mongorestore

数据库连接通用类参考:三、java连接mongo数据库

操作mongo的方法有很多种,如下是我比较习惯的写法,查询是最复杂的请大家参考。

一、mongo新增

    //把json当做数据内容插入mongo库中
public int insertTrack(JSONObject jsonObject) {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
DBObject dbObject = (DBObject) JSON.parse(jsonObject.toString());
picContent.insertOne(dbObject);
return result;
}
 //批量添加
public int insertMany( ) {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
String a ="{ \"_id\" : \"1\" , \"machineMac\" : \"FC83C6\"}";
String b = "{ \"_id\" : \"2\" , \"machineMac\" : \"F1727E\"}";
DBObject dbObjectA = (DBObject) JSON.parse(a);
DBObject dbObjectB = (DBObject) JSON.parse(a); ArrayList mongoList = new ArrayList();
mongoList.add(dbObjectA);
mongoList.add(dbObjectB); picContent.insertMany(mongoList);
mongoList.clear(); return result;
}

二、mongo删除

    public int removeTrack(String trackId) {
int result = 0;
MongoDatabase database = MongoDbDao.getDb("testDb");
MongoCollection picContent = database.getCollection("traceTable", BasicDBObject.class);
//如下注意一般mongo自带的主键如右边 "_id" : ObjectId("60703e8f7b85766cd2554cf9") 字符串外层会带一个ObjectId()操作_id的时候使用new ObjectId()就可以
BasicDBObject delSql = new BasicDBObject("_id", new ObjectId(trackId));
picContent.findOneAndDelete(delSql);
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) ;
}

四、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;
}

四、java对mongo数据库增删改查操作的更多相关文章

  1. java连接mysql数据库增删改查操作记录

    1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...

  2. Java连接MySQL数据库增删改查通用方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...

  3. Android SQLite 数据库 增删改查操作

    Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...

  4. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  5. Android_SQLite数据库增删改查操作

    一:什么是SQLite? 在Android平台上,集成了一个嵌入式关系型轻量级的数据库. 二:什么时候用的数据库? 有大量相似机构的数据需要存储时. 三:如何创建一个数据库? 1.创建一个Sqlite ...

  6. java连接mysql以及增删改查操作

    java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...

  7. Java实现简单的增删改查操作

    需求分析:通过数组 ,完成 对学生信息的 管理 (增删改查)创建1个 学生类创建1个 CRUD的类 – 学生管理类 并测试 在这个程序中我只运用了两个类进行操作 package com.hopu.de ...

  8. jmeter-Java-MongoDB 数据库增删改查操作

    在日常测试过程中会发现有些测试数据是通过数据库来获取的,一般常用的数据比如SQL .Oracle,此类数据库jmeter有专门的插件进行使用JDBC,今天跟大家说一说关于Mongodb这个数据库jme ...

  9. SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...

  10. Android SQLite数据库增删改查操作

    一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...

随机推荐

  1. 基于 Echarts实现可视化数据大屏展示?

    当涉及到使用Echarts实现可视化数据大屏展示时,以下是一份非常详细的介绍说明. 第一部分:介绍Echarts Echarts是一个由百度开源的基于JavaScript的可视化图表库.它支持多种图表 ...

  2. Centos离线安装JDK+Tomcat+MySQL8.0+Nginx

    一.安装JDK 注:以下命令环境在Xshell中进行. 1.查询出系统自带的OpenJDK及版本 rpm -qa | grep jdk 2.如果显示已安装openjdk则对其进行卸载. #卸载 rpm ...

  3. 记一次解决RestTemplate和HttpClient请求结果乱码的问题

    调用一个接口,发送POST请求,浏览器和Postman均返回正常,代码中用RestTemplate和HttpClient均返回乱码 开始一直以为是编码问题导致,网上查了解决方法,也看了源码,都不对症 ...

  4. 01 MyBatis第一个应用程序

    1.MyBatis是什么? mybatis是一个基于java的持久层框架. 2.什么是持久化 数据由瞬态状态变为持久状态. 3.持久层: 完成持久化工作的代码块. -- DAO层,将数据存到数据库 4 ...

  5. ElasticSearch之cat trained model API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/ml/trained_models?v=true&pretty" --ca ...

  6. ElasticSearch之线程池

    ElasticSearch节点可用的CPU核的数量,通常可以交给ElasticSearch来自行检测和判定,另外可以在``elasticsearch.yml`中显式指定.样例如下: node.proc ...

  7. Python——第三章:函数的定义

    函数的定义: 对某一个特定的功能或者代码块进行封装. 在需要使用该功能的时候直接调用即可 格式: def 函数的名字(): 被封装的功能或者代码块->函数体 调用: 函数的名字() 使用函数的好 ...

  8. C++篇:第十章_命名空间_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 十.命名空间 命名空间可以在全局作用域或其他命名空间内部定义,但不能在函数.结构 ...

  9. 华为云MVP朱有鹏:做IoT开发乐趣无穷,年轻开发者更要厚积薄发

    [摘要] 可以预见的是,AIoT会是未来一段时间主流的技术趋势方向,当前也有不少科技巨头涌入其中,蓄势待发,而5G的到来加速了AIoT产业的扩张速度,所以如华为云MVP朱有鹏所说,年轻的开发者应该要拥 ...

  10. 云图说|“真人?机器?傻傻分不清!” WAF Bot管理,带你慧眼辨“精”!

    黑产SEO,恶意竞争,交易欺诈--企业业务频受恶意Bot流量困扰? 华为云Web应用防火墙Bot管理功能,帮助您轻松甄别并拦截恶意Bot流量,规避恶意 Bot 行为带来的业务风险. 企业主机安全(Ho ...