系列导航

一、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. VScode怎么实现c的运行,这里只讲述一些细节

    第一下载的Vscode要设置信任模式,否则你后面搞什么都没有用 第二下载minGw还是gcc 都行 第三安装插件,c,c++. 然后编译就行了,我搞了一天,主要弹出的是未找到exe文件,但是我告诉大家 ...

  2. ConcurrentModificationException日志关键字报警引发的思考

    本文将记录和分析日志中的ConcurrentModificationException关键字报警,还有一些我的思考,希望对大家有帮助. 一.背景 近期,在日常的日志关键字报警分析时,发现我负责的一个电 ...

  3. [ABC263E] Sugoroku 3

    Problem Statement There are $N$ squares called Square $1$ though Square $N$. You start on Square $1$ ...

  4. SpringBoot使用maven打jar包配置

    在pom.xml文件中加入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactI ...

  5. 如何用python脚本制作生成CANdbc

    最近在工作中,有同事拿了一个excel的dbc表格,在用官方的dbc工具一个一个创建信号,大概看了一下共累计20多个节点,300多个信号,居然在手动处理,顿感无语.. 于是在网络上搜相关的dbc 通过 ...

  6. Python——第二章:运算符

    1. 算数运算    + - * / // % "//"除 "%"余 a = 20 b = 3 c = a // b d = a % b # 20 / 3 = ...

  7. Python——第一章:循环语句while

    循环语句可以让我们的代码重复的去执行 while循环: while 条件:        代码 过程: 判断while循环的条件是否为真, 如果真, 执行代码. 然后再次判断条件.....直到条件为假 ...

  8. ElasticSearch的简单api介绍

    1:ElasticSearch是什么? Elasticsearch 是一个分布式的免费开源搜索和分析引擎 适用于包括文本.数字.地理空间.结构化和非结构化数据等在内的所有类型的数据 Elasticse ...

  9. 解决QObject::moveToThread: Current thread (0x56059f9b0f70) is not the object's t

    对 opencv 降级 pip install opencv-python==4.1.2.30

  10. 【Tinyui】极简跨平台桌面端小工具开发框架

    导航 Github Gitee 开发指南 用户手册 说明 在产品或项目工作中,可能会遇到需要给非开发人员或者客户提供简易的PC小工具,这些小工具通常用户交互比较简单:功能也不复杂:同时需要支持多平台以 ...