2019独角兽企业重金招聘Python工程师标准>>>

首先,下载mongdb对JAVA的支持,点击这里下载驱动包,这里博主下载的是2.10.1版。

mongdb版本为2.4.9

在项目中导入该驱动包。

打开shell,在终端输入mongo,显示如下

只有默认的三个数据库。

新建一个java project

代码如下,

1.操控mongdb连接,使用MongoOptions来设置一些参数。

package Util;import java.net.UnknownHostException;import com.mongodb.DB;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;//数据库工具类
public class MongoDBUtil {private static Mongo mongo = null;private static String DBString = "MongoDBTest";//数据库名private static String hostName = "localhost";//主机名private static int port = 27017;//端口号private static int poolSize = 10;//连接池大小private MongoDBUtil(){}//获取数据库连接public static DB getDB(){if(mongo == null){init();}return mongo.getDB(DBString);}//初始化数据库private static void init(){try {//实例化Mongomongo = new Mongo(hostName, port);MongoOptions opt = mongo.getMongoOptions();//设置连接池大小opt.connectionsPerHost = poolSize;} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

2.基本操作接口

package DAO;import java.util.List;import com.mongodb.BasicDBObject;//数据库CRUD基本操作
public interface BaseDAO {public boolean insert(String collectionName, BasicDBObject bean);public boolean delete(String collectionName, BasicDBObject bean);public List find(String collectionName, BasicDBObject bean);public boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean);}

3.基本操作实现

package DAO.Impl;import java.util.List;import com.mongodb.BasicDBObject;
import com.mongodb.DB;import Util.MongoDBUtil;
import DAO.BaseDAO;//数据库基本操作实现
public class BaseDAOImpl implements BaseDAO {@Overridepublic boolean insert(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).insert(bean);return false;}@Overridepublic boolean delete(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).remove(bean);return false;}@Overridepublic List find(String collectionName, BasicDBObject bean) {DB db = MongoDBUtil.getDB();List list = db.getCollection(collectionName).find(bean).toArray();return list ;}@Overridepublic boolean update(String collectionName, BasicDBObject oldBean, BasicDBObject newBean) {DB db = MongoDBUtil.getDB();db.getCollection(collectionName).update(oldBean, newBean);return false;}}

4.基本操作测试

4.1添加文档操作

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();BasicDBObject beanOne = new BasicDBObject();beanOne.put("name", "kakakaka");beanOne.put("sex", "男");beanOne.put("age", 20);baseDAOImpl.insert("test", beanOne);

执行后结果

可以看到mongdb会自动检测是否存在数据库MongoDBTest,如果不存在则新建一个,然后再检测是否存在文档集合test,如果不存在则新建一个,最后插入数据。

4.2查询文档操作

        List<BasicDBObject> list = baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka"));for(BasicDBObject i : list){System.out.println(i.get("name"));System.out.println(i.get("sex"));System.out.println(i.get("age"));}

输出结果如下

kakakaka
男
20

4.3修改文档操作如下

        BasicDBObject oldBean = (BasicDBObject) baseDAOImpl.find("test", new BasicDBObject("name", "kakakaka")).get(0);BasicDBObject newBean = (BasicDBObject) oldBean.clone();newBean.put("name", "gugugugu");System.out.println(oldBean.get("name"));System.out.println(newBean.get("name"));baseDAOImpl.update("test", oldBean, newBean);

控制台输出结果

kakakaka
gugugugu

4.4删除文档

先再向数据库插入一条数据

注意,mongdb区分一个文档中的不同数据是依赖它自己向每条数据中赋的"_id"

所以再插入这样一条数据

        BaseDAOImpl baseDAOImpl = new BaseDAOImpl();BasicDBObject beanOne = new BasicDBObject();beanOne.put("name", "gugugugu");beanOne.put("sex", "男");beanOne.put("age", 20);baseDAOImpl.insert("test", beanOne);

结果如下

执行删除操作

首先根据"_id"将文档中第二条数据修改

        baseDAOImpl.update("test", new BasicDBObject("_id", new ObjectId("5471c9db44aeeb8b5524f2ea")), new BasicDBObject("name","kakakaka").append("age", 20));

结果如下

将"name" 等于 "kakakaka"的数据删除

        baseDAOImpl.delete("test", new BasicDBObject("name","kakakaka"));

5.模糊搜索

使用正则表达式根据关键字key对数据库相应属性进行模糊搜索,

        String key = "a";Pattern pattern = Pattern.compile("^.*" + key + ".*$", Pattern.CASE_INSENSITIVE);DB db = MongoDBUtil.getDB();List list =  db.getCollection("test").find(new BasicDBObject("name", pattern)).toArray();for(int i = 0; i < list.size();i++){System.out.println(list.get(i));}

数据库内部的内容

输出结果

{ "_id" : { "$oid" : "547ebfc744aefdcc5fe90bce"} , "name" : "kakakaka" , "sex" : "男" , "age" : 20}

转载于:https://my.oschina.net/kakakaka/blog/347954

在JAVA中使用MongoDB相关推荐

  1. java objectid_如何在java中创建mongoDB objectid

    参考 How to add an array to a MongoDB document using Java?后 我用java创建了一个mongo模式 它有子元素,我得到主文件的_id 我想在子元素 ...

  2. mongodb和mysql中自动增长id_如何在java中维护MongoDB的_id字段的自动增长

    _id字段是MongoDB中一个特殊的字段,它的类型为BSON ObjectId.它是每条记录的第一个属性,并且该属性值必须唯一. BSON ObjectId长12个字节,包含4字节的时间戳.3字节的 ...

  3. mongo java 注解,在Java中使用Spring Data MongoDB操作Mong | zifangsky的个人博客

    前言:在上一篇文章中(PS:https://www.zifangsky.cn/923.html)我简单介绍了如何在Linux中安装MongoDB以及MongoDB的增删改查等基本命令用法(PS:更多M ...

  4. Java语言连接MongoDB常用的方法

    MongoDB是我们常用的非关系型数据库之一,今天我们了解一下如何使用Java去连接使用MongoDB. 1.导入MongoDB驱动包 2.获取Mongo连接对象 MongoClient mc = n ...

  5. Java 程序中使用 MongoDB教程

    环境配置 在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动. 本章节实例时候 Mongo 3.x 以上版本. 你可以参考本站的Ja ...

  6. java中mongodb中dao通用_Spring配置MongoDB及 构建通用Dao

    (文章的编写虽然不至于花费很多时间,但转载请注明来源.本文参考了:http://liuluo129.iteye.com/blog/1994045,在此基础上进行了部分优化,及详细的介绍了流程) 1.首 ...

  7. mongo java aggregate_Java中使用mongodb的aggregate聚合查询

    首先,我们在数据库中,mongodb的聚合查询是这样写. db.getCollection('parking_record').aggregate( {$match : {"appId&qu ...

  8. android 遍历实体类,Java中遍历实体类(处理MongoDB)

    在实际过程中,经常要将实体类进行封装,尤其是处理数据库的过程中:因此,对于遍历实体类能够与数据库中的一行数据对应起来. 我是使用的环境是Spring boot,访问的数据库时MongoDB 实体类遍历 ...

  9. c#获取对象的唯一标识_在 Java 中利用 redis 实现分布式全局唯一标识服务

    作者: 杨高超 juejin.im/post/5a4984265188252b145b643e 获取全局唯一标识的方法介绍 在一个IT系统中,获取一个对象的唯一标识符是一个普遍的需求.在以前的单体应用 ...

最新文章

  1. 如何从ATS获取客户端平均响应时间(单位,毫秒)?
  2. R语言使用vcd包的spine函数可视化spinogram图(spinogram图是被归一化的堆叠条形图、这样每个条形的高度一样、内部显示不同分布的比例)
  3. 【ES6】JS类的用法class
  4. SwiftUI 发展现状和学习指南
  5. jvm性能调优实战 -58类加载器过多引发的OOM问题
  6. 数据库索引的作用和长处缺点
  7. mapreduce笔记
  8. c++全局监听ctrl s_号称史上最全!134个CAD快捷键强烈来袭,难道你只知道Ctrl+C?...
  9. 蚂蚁金服 3 个项目进入 CNCF 云原生全景图 | 开源
  10. jsencrypt vue使用_在Vue项目中使用jsencrypt.js对数据进行加密传输
  11. 网易北京:全员核酸检测为阴性 园区环境检测为阴性
  12. 大学计算机试卷分析报告,(最新整理)大学试卷分析报告
  13. CSUOJ 1111 三家人
  14. 创建dqn的深度神经网络_深度Q网络(DQN)-I
  15. 【时间序列】动态时间规整(DTW)算法简介(python)
  16. C++程序员常用工具集
  17. MAC下切换多个IP的Shell脚本
  18. c++基础 STL 第 0 篇:(模板)
  19. AI智能生图技术的未来趋势
  20. 动作捕捉(Motion Capture)文件BVH的解读笔记

热门文章

  1. C# 不能从数据库更新实体
  2. vue+django2.0.2-rest-framework 生鲜项目(八)
  3. java中如何将字符串数组转换成字符串
  4. contain_of宏定义
  5. 数据库系统实现 第六章 查询执行
  6. 数据挖掘之人工神经网络BP算法
  7. Window下启动MariaDB服务启动失败
  8. 不用代理实现弹出进度条窗体
  9. Activiti 6.x【11】IntermediateEvent
  10. 本地IDC机房数据库容灾解决方案