四、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数据库增删改查操作的更多相关文章
- java连接mysql数据库增删改查操作记录
1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- Android SQLite 数据库 增删改查操作
Android SQLite 数据库 增删改查操作 转载▼ 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NU ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- Android_SQLite数据库增删改查操作
一:什么是SQLite? 在Android平台上,集成了一个嵌入式关系型轻量级的数据库. 二:什么时候用的数据库? 有大量相似机构的数据需要存储时. 三:如何创建一个数据库? 1.创建一个Sqlite ...
- java连接mysql以及增删改查操作
java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...
- Java实现简单的增删改查操作
需求分析:通过数组 ,完成 对学生信息的 管理 (增删改查)创建1个 学生类创建1个 CRUD的类 – 学生管理类 并测试 在这个程序中我只运用了两个类进行操作 package com.hopu.de ...
- jmeter-Java-MongoDB 数据库增删改查操作
在日常测试过程中会发现有些测试数据是通过数据库来获取的,一般常用的数据比如SQL .Oracle,此类数据库jmeter有专门的插件进行使用JDBC,今天跟大家说一说关于Mongodb这个数据库jme ...
- SQLite数据库增删改查操作
一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串 ...
- Android SQLite数据库增删改查操作
一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字). TEXT(字符 ...
随机推荐
- Aiganize组局小程序开发手册
1. 开发阶段概述: 第一阶段: 针对组局和参局的产品功能落地完善小程序, 修改前端界面,去除冗余, 完善数据库设计 完善组局参局的功能 让每个用户能参与组局大厅的组局 让用户能申请为组局者发起组局, ...
- 【WCH以太网接口系列芯片】基于CH395的组播应用
---------------------------------------------------------------------------------------------------- ...
- 吉特日化MES实施--三种浪费
在实施吉特日化MES系统的过程中,遇到各种问题,包括自身问题以及甲方问题,导致项目滞后延期的主要问题分析,汇总三种浪费: (1) 信息传递的浪费: 这个在甲方产品设计以及生产过程中出现的问题,也是我 ...
- Go 语言区块链测试:实践指南
引言 Go 语言在区块链开发中的应用日益增多,凭借其简洁的语法和强大的并发支持,成为开发区块链应用的热门选择.理解和实践 Go 语言的单元测试对于保证区块链应用的质量和稳定性至关重要. Go 单元测试 ...
- Markdown References
每次写文章,用到都要查一下的Markdown语法 字体颜色 [Markdown笔记]设置字体颜色 字体颜色 Font colors Decrsiption Demonstration Effect 选 ...
- 11 HTTP的特点,优点和缺点
[toc] # HTTP的五大特点 # HTTP的优点 1. 最大的优点:简单.灵活和易于拓展 2. 拥有成熟的软硬件环境,应用的非常广泛,是互联网的基础设施 3. 是无状态的,可以轻松实现集群化, ...
- SpringBoot-Validation优雅实现参数校验
1.是什么? 它简化了 Java Bean Validation 的集成.Java Bean Validation 通过 JSR 380,也称为 Bean Validation 2.0,是一种标准化的 ...
- MySQL 事务的基础知识
事务的基础知识 1. 数据库事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库中的数据始终保持 一致性,同时我们还能通过事务的机制 恢复到某个时间地点的数据,这样可以保证已 ...
- linux文件和文件夹的筛选、查找及用户和组管理命令
1.列出当前系统上所有已经登陆的用户的用户名, 注意:同一个用户登录多次,则只显示一次即可. 查看系统用户的命令为: (1)getent passwd 查看系统上的所有用户信息 (2)w 查看登录用户 ...
- 在linux系统上怎么获取命令的帮助信息及man文档划分
如何在linux系统上获取命令的帮助信息及man文档的章节划分 1.命令 -- help 2.man 命令 后者更加详细 首先帮助中尖括号<>和方括号[]以及省略号...的含义, 在方括号 ...