系列导航

一、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. HttpClient报错Timeout waiting for connection from pool

    报错现象 线上项目使用HttpClient请求第三方的HTTP资源,并发量高的时候,日志框报Timeout waiting for connection from pool 客户端的现象是有时正常,有 ...

  2. JQuery_2

    1.动画:    1.三种方式显示和隐藏元素       1.默认方式       1.show([speed,[easing],[fn]])         1.参数:             1. ...

  3. pytorch学习笔记——加载checkpoint时,程序报错,存在GPU和CPU不同步的情况

    当我们需要加载之前训练的checkpoint的时候,有时候会发现之前能训练的代码无法继续训练. 这时候很有可能加载优化器的步骤在加载模型前面,这样可能会导致优化器的参数仍然在CPU上,因此代码需要由原 ...

  4. 找到了!GitHub Copilot的最佳免费平替

    在如今这个人工智能高速发展的时代,每个行业都在被AI技术影响而改变.层出不穷的AI辅助工具,让我们看到了机器正在取代一部分基础的日常工作.对于我们开发者而言,当前最炙手可热的就是GitHub Copi ...

  5. ezbypass-cat【目录穿透】

    ezbypass-cat[目录穿透][难度:4] 题目界面 尝试SQL注入无果,看题解发现是目录穿透,需要抓包才能得到flag. 解题步骤 随便输入用户名和密码抓包 更改请求方式(POST→GET), ...

  6. 你是否想知道如何应对高并发?Go语言为你提供了答案!

    并发编程是当前软件领域中不可忽视的一个关键概念.随着CPU等硬件的不断发展,我们都渴望让我们的程序运行速度更快.更快.而Go语言在语言层面天生支持并发,充分利用现代CPU的多核优势,这也是Go语言能够 ...

  7. 【ASP.NET Core】使用SignalR推送服务器日志

    一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API.由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动.经 ...

  8. C语言实现链表与文件的存取

    作者:柠檬i,学习C时长两个月半的个人练习生 第一次写文章,难免有些不足,请多多包涵. 本程序主要功能是建立链表,然后把链表数据存储到文件中,然后把文件数据存储到数组中并输出. 不多说了,放代码. 此 ...

  9. IPv6实现内网穿透,极低成本保姆级教程

    摘要 一直想实现内网穿透从而达到随时随地可以连接到自己电脑的目的.尝试过使用一些付费的现成方案,但是价格偏高,而流量少得可怜,只能开放几个固定端口. 实现内网穿透的最大难点就在于拥有一个公网IP,但是 ...

  10. 21、Scaffold属性 FloatingActionButton实现类似闲鱼App底 部导航凸起按钮

    FloatingActionButton详解 FloatingActionButton简称FAB ,可以实现浮动按钮,也可以实现类似闲鱼app的底部凸起导航   实现类似闲鱼App底部导航凸起按钮 c ...