1、使用Maven依赖相应jar

<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>3.9.1</version>
</dependency>

2、获取客户端

  MongoClient mongoClient = MongoClients.create();// 获取本地默认端口的mongoDB服务

3、获取数据库

  MongoDatabase database = mongoClient.getDatabase("mongodb_test");

4、获取表

  MongoCollection coll = database.getCollection("member");

5、针对表的CRUD操作

  1)新增

    Document doc = new Document("name", "MongoDB")
      .append("type", "database")
      .append("count", 1)
      .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
      .append("info", new Document("x", 203).append("y", 102));
    coll.insertOne(doc);

  2)查询

    FindIterable<Document> results = coll.find();
    for (Document result : results) {
      System.out.println(result.getString("name"));
    }

  3)修改

    UpdateResult result = coll.updateMany(eq("name", "MongoDB Michael"), new Document("$set", new Document("name", "MongoDB")));
    System.out.println(result.getModifiedCount());

  4)删除

    DeleteResult result = coll.deleteMany(eq("type", "database"));
    System.out.println(result.getDeletedCount());

6、删除表

  coll.drop();

7、基于POJO的操作

  需要设置CodecRegistry,能够让对象与BSON互相转化

  比如:Member对象

@Data
public class Member {
private ObjectId id;
private String name;
private int age;
private String addr;
}
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().register(Member.class).build();
CodecRegistry pojoCodecRegistry = fromRegistries(
fromCodecs(new StringCodec(),new IntegerCodec(),new ObjectIdCodec()) // 需要针对对象中的类型设置Codec
, fromProviders(pojoCodecProvider));

CodecRegistry
  1)可以设置到MongoClient
    MongoClientSettings settings = MongoClientSettings.builder().codecRegistry(pojoCodecRegistry).build();
    MongoClient mongoClient = MongoClients.create(settings);

  2)可以设置到数据库
    database = database.withCodecRegistry(pojoCodecRegistry);
  3)可以设置到表
    collection = collection.withCodecRegistry(pojoCodecRegistry);

基于POJO的CRUD操作
1)新增
 
 Member member = new Member();
  member.setName("Michael");
  member.setAge(30);
  member.setAddr("SZ");

  coll.insertOne(member);

2)查询
  FindIterable<Member> results = coll.find();
  for (Member result : results) {
  System.out.println(result);
  }
3)修改
  UpdateResult result = coll.updateMany(eq("age",30),set("age",18));
  System.out.println(result);
4)删除数据
  DeleteResult result = coll.deleteMany(eq("name","Michael"));
  System.out.println(result);
5)删除表
  coll.drop();

Mongo基于Java基本操作的更多相关文章

  1. 9个基于Java的搜索引擎框架

    在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...

  2. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  3. 基于Java的打包jar、war、ear包的作用与区别详解

      本篇文章,小编为大家介绍,基于Java的打包jar.war.ear包的作用与区别详解.需要的朋友参考下   以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.cla ...

  4. 基于Java Netty框架构建高性能的部标808协议的GPS服务器

    使用Java语言开发一个高质量和高性能的jt808 协议的GPS通信服务器,并不是一件简单容易的事情,开发出来一段程序和能够承受数十万台车载接入是两码事,除去开发部标808协议的固有复杂性和几个月长周 ...

  5. 基于Java Mina框架的部标808服务器设计和开发

    在开发部标GPS平台中,部标808GPS服务器是系统的核心关键,决定了部标平台的稳定性和行那个.Linux服务器是首选,为了跨平台,开发语言选择Java自不待言. 我们为客户开发的部标服务器基于Min ...

  6. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  7. 基于java的设计模式入门(1)——为什么要学习设计模式

    大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ...

  8. WebDriver基本API使用(基于Java)V1.0

    WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html

  9. WebDriver基本API使用手册(基于Java和C#)

    WebDriver基本API使用手册(基于Java和C#) http://www.docin.com/p-747728551.html

随机推荐

  1. 在 Visual Studio 里一秒打开 ILSpy,并反编译当前项目

    下载 ILSpy(如果已有 ILSpy,忽略此步骤) 1.打开官方git 仓库 - https://github.com/icsharpcode/ILSpy 2.点击右侧的 Releases 最新版, ...

  2. python中的时间戳和格式化之间的转换

    import time #把格式化时间转换成时间戳 def str_to_timestamp(str_time=None, format='%Y-%m-%d %H:%M:%S'): if str_ti ...

  3. celery异步任务体系笔记

    1.异步框架示意图 2.celery 官方文档 http://docs.celeryproject.org/en/latest/index.html 3.启动celery的命令 启动 sender 自 ...

  4. python 获取当天和前几天时间数据

    python 获取当天和前几天时间数据 import datetime from datetime import datetime, date, timedelta def dayDateRange( ...

  5. MindSpore循环神经网络

    MindSpore循环神经网络 一. 神经网络的组成 神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元.每个神经元与其它神经元相连,处于激活状态时,就会向相连的神经元发送相应信号.从而改 ...

  6. 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载

    在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...

  7. 【python学习小知识】求绝对值和numpy和tensor的相互转换

    一.python求绝对值的三种方法 1.条件判断 2.内置函数abs() 3.内置模块 math.fabs 1.条件判段,判断大于0还是小于0,小于0则输出相反数即可 # 法1:使用条件判断求绝对值 ...

  8. C# 24点游戏求解算法

    经常跟儿子玩24点,有时候比较难算的,算一会儿,两人算不出来,就收了,当作没法算. 以我的数学能力,一般来说,算不出来的,大概率确实是算不出来的. 但是遇到比较变态的,当作算不出来是可能的,所以一直想 ...

  9. linux安装配置交叉编译器arm-linux-gnueabi-gcc

    要使我们在x86架构下运行的程序迁移至ARM架构的开发板中运行时,需要通过交叉编译器将x86下编写的程序进行编译后,开发版才能运行. 在安装之前我们需要了解,什么是交叉编译器. 一.下载交叉编译器 这 ...

  10. 关于 Windows 下 Qt 开发,这个问题必须要搞清楚!

    小伙伴们,大家好,小北师兄又来喂饭啦,从上次写完<一个例子让你秒懂 Qt Creator 编译原理>后,师兄对于 Qt 的一些环境配置有了更深的理解,这对师兄进行 Qt 的后续学习起到了很 ...