1. 导入jar包

    <dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.2</version>
    </dependency>
  2. 连接MongoDB

    实例化一个没有任何连接参数的MongoClient对象,可以连接到运行在本地主机的27017端口

    MongoClient mongoClient = new MongoClient();

    我们也可以连接到指定主机的27017端口

    MongoClient mongoClient = new MongoClient("localhost");

    指定主机和端口

    MongoClient mongoClient = new MongoClient("localhost", 27017);

    指定MongoClientURI

    MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
  3. 获得数据库和集合

    连接到test库

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

    获得users集合

    MongoCollection<Document> collection = database.getCollection("users");
  4. 查询文档

    用来打印查询结果

    Block<Document> printBlock = new Block<Document>() {
    @Override
    public void apply(Document document) {
    System.out.println(document.toJson());
    }
    };

    查询所有文档

    collection.find().forEach(printBlock);
    
    collection.find(new Document()).forEach(printBlock);

    复合查询

    collection.find(eq("name", "sue")).forEach(printBlock); // 通过过滤器查询
    
    collection.find(and(gte("age", 20), lt("age", 30), eq("type", 2))).forEach(printBlock); // 通过Filters 过滤
    
    collection.find(new Document("age", new Document("$gte", 20).append("$lt", 30)).append("type", 2)).forEach(printBlock); // 通过 filter document 过滤
    
    

    返回指定的查询字段

    collection.find().projection(new Document("name", 1).append("age", 1).append("type", 1).append("_id", 0)).forEach(printBlock); // 通过.projection()指定返回的字段
    
    collection.find().projection(fields(include("name", "age", "type"), excludeId())).forEach(printBlock);  // 通过Projections类过滤
    
    

    排序

    collection.find().sort(Sorts.ascending("name")).forEach(printBlock);    // 通过.sort() Sorts类排序
    
    
  5. 增加文档

    插入一条数据

    Document document = new Document("name", "webb")
    .append("age", 24)
    .append("type", 1)
    .append("status", "A")
    .append("favorites", new Document("sports", "run").append("food", "photo")); collection.insertOne(document); // 插入一条数据

    插入多条数据

    Document document2 = new Document("name", "lebo")
    .append("age", 24)
    .append("type", 1)
    .append("status", "A")
    .append("favorites", new Document("sports", "run").append("food", "photo")); List<Document> documents = new ArrayList<>();
    documents.add(document);
    documents.add(document2);
    collection.insertMany(documents); // 插入多条数据
  6. 更新文档

    修改单个文档

    collection.updateOne(eq("name", "abc"), combine(set("age", 24), set("status", "B")));

    修改多个文档

    collection.updateMany(eq("name", "webb"), combine(set("age", 23), set("type", 2)));

    如果upsert为true的话,没有匹配到查询条件,就会插入一条。

    collection.updateOne(eq("name", "wenboxu"), combine(set("age", 24)), new UpdateOptions().upsert(true));

    替换一条记录

    collection.replaceOne(eq("name", "wenboxu"), new Document("age", "22").append("name", "wenboxu"));
  7. 删除文档

    删除单个文档

    collection.deleteOne(eq("name", "webb"));

    删除多个文档

    collection.deleteMany(eq("age", 22));

    删除所有文档

    collection.deleteMany(new Document());

MongoDB Java Driver 3.4操作的更多相关文章

  1. MongoDB Java Driver操作指南

    MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...

  2. Mongodb Java Driver 参数配置解析

    要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...

  3. 给java mongodb 官方driver 增加bean 操作

      mongodb官方的java driver不支持直接插入java bean,只能使用DbObject的Key,Value形式进行insert,update,(c# mongodb官方driver类 ...

  4. MongoDB Java Driver

    本文使用 Java 来描述对 Mongodb 的相关操作,数据库版本是 3.2.8,驱动版本为 3.2.2. 本文将讨论 如何连接MongoDB 文档的 CURD 操作 文档的上传和下载 1. 连接到 ...

  5. BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能

    http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...

  6. 数据库.MongoDB.Java样例

    1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...

  7. MongoDB Java API操作很全的整理

    MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,一般生产上建议以共享分片的形式来部署. 但是MongoDB官方也提供了其它语言的客户端操作API.如下图所示: 提供了C.C++ ...

  8. [译] MongoDB Java异步驱动快速指南

    导读 mongodb-java-driver是mongodb的Java驱动项目. 本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour ...

  9. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

随机推荐

  1. docker工作流程

    Docker提供一种方法在容器中运行安全隔离的应用程序,应用程序与所有依赖项和库一起打包在容器中.因为你的应用程序总是可以使用它在构建镜像中期望的环境运行,测试和部署比以往任何时候都更简单,因为你的构 ...

  2. javascript面向对象(一)

    javascript是弱类型,直译式的面相对象编程语言. 在之前我们说过 var a = 123: 在这里a是整数 但是我们可以给a重新复制为 a="你好"; 在这个过程中变量a ...

  3. Oracle存储过程的调用和执行

    1.什么是存储过程: 用于在数据库中完成特定的操作或者任务.是一个PLSQL程序块,可以永久的保存在数据库中以供其他程序调用. 2.无参存储过程的使用: Normal 0 7.8 磅 0 2 fals ...

  4. Hive分区(静态分区+动态分区)

    Hive分区的概念与传统关系型数据库分区不同. 传统数据库的分区方式:就oracle而言,分区独立存在于段里,里面存储真实的数据,在数据进行插入的时候自动分配分区. Hive的分区方式:由于Hive实 ...

  5. JS——控制标记的样式

    1.定义一个div,宽度为100px,高度为100px,背景色为粉色. 定义一个事件,鼠标移入时背景色变为蓝色,宽度变为200px. 定义一个事件,鼠标移出时背景色变为红色. html文件: < ...

  6. PRINCE2的好处是什么?使用PRINCE2受益非浅

    项目管理促进了全球许多公共部门与私营企业的经济活动. 优秀的项目管理意味着使用更少的资源在更短的时间内达到一个成功的结果,经过良好培训的项目经理能够帮助组织更加富有创新力,取得成功. 对那些希望展现自 ...

  7. [C++]STL容器Vector的内存释放

    直接抛出两句话,说明到底应该如何释放Vector占用的内存. “vector的clear不影响capacity,你应该swap一个空的vector.” <Effective STL>中的“ ...

  8. 持续集成:TestNG组织如何测试用例

    持续集成:TestNG组织如何测试用例   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:90 ...

  9. 什么是测试开发工程师-google的解释

    什么是测试开发工程师-google的解释 “ 软件测试开发工程师[SET or Software Engineer in Test],和软件开发工程师一样是开发工程师,主要负责软件的可测试性.他们参与 ...

  10. css3hover效果

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...