mongodb-javamongodb-java入门


备注

本节概述了mongodb-java是什么,以及开发人员可能想要使用它的原因。

它还应该提到mongodb-java中的任何大型主题,并链接到相关主题。由于mongodb-java的文档是新的,您可能需要创建这些相关主题的初始版本。

版本

发布日期
3.4.2 2017年1月26日
3.4.1 2016年12月19日
3.4.0 2016年11月27日
3.3.0 2016年7月18日
3.2.2 2016年2月16日
3.2.1 2016年1月13日
3.2.0 2015年12月7日
3.1.1 2015年11月12日
3.1.0 2015年10月7日
3.0.4 2014年9月14日
2.14.3 2016年7月18日
2.14.2 2016年3月31日
2.14.1 2016年1月13日
2.14.0 2015年12月7日
2.13.3 2015-09-08

安装或设置

条件

一个正在运行的MongoDB服务器, 这里有更多细节。

设置Java项目

MongoDB Java驱动程序作为JAR文件提供,可以像任何其他JAR一样包含在项目中。例如:

  • Maven:在pom.xml<dependencies> 部分添加一个条目。
<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.2</version>
</dependency> 
 
  • Gradle:将以下依赖项添加到build.gradle

compile 'org.mongodb:mongo-java-driver:3.4.2'

  • 手动包含:从此处下载JAR文件并将其添加到项目的类路径中。

注意:上面示例中显示的版本是撰写本文时的最新稳定版本,但您可以选择此处提供的任何版本。

使用MongoDB Java驱动程序

让我们创建一个MongoClient ,最简单的调用是:

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

这假设MongoDB服务器在默认端口的localhost上运行,并且它是不安全的。对于经过身份验证的访问,自定义连接选项,连接到复制集和分片集群,有许多变体,所有这些都在Mongo DB Java驱动程序文档中详细介绍。

现在我们已经连接了,让我们创建一个数据库和一个集合。 MongoDB在第一个文档保存到它时隐式创建一个集合,所以让我们这样做:

MongoDatabase database = mongoClient.getDatabase("starter");
MongoCollection<Document> collection = database.getCollection("superheroes");
Document document = new Document("name", "Superman");
collection.insertOne(document);
 

注意:您可以显式创建一个集合,但上面的用法更常见,当然更适合“入门”主题。

现在让我们看看我们是否可以找到我们创建的文档:

FindIterable<Document> documents = purchases.find(Filters.eq("name", "Superman"));
for (Document found : documents) {
    System.out.println(found.toJson());
}
 

上面的代码将输出以下内容( _id 字段是MongoDB的自动生成的文档密钥):

找到文件:{“_ id”:{“$ oid”:“5981bd586d47c203904a9cf9”},“名称”:“超人”}

既然我们已经验证我们已成功创建了一个文档,那么我们就删除它:

DeleteResult deleteResult = purchases.deleteOne(Filters.eq("name", "Superman"));
System.out.println(String.format("Deleted %s document(s)", deleteResult.getDeletedCount()));
 

上面的代码将输出以下内容:

删除了1个文件

完整的例子

把各个部分放在一起我们得到:

import com.google.common.collect.Lists;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import org.bson.Document;

import java.util.List;

public class IntroducingTheMongoDBJavaDriver {

    public static void main(String... args) throws Exception {
        MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));

        MongoCollection<Document> superheroes = mongoClient.getDatabase("starter").getCollection("superheroes");

        Document document = new Document("name", "Superman");
        superheroes.insertOne(document);

        FindIterable<Document> documents = superheroes.find(Filters.eq("name", "Superman"));
        for (Document found : documents) {
            System.out.println(String.format("Found document: %s", found.toJson()));
        }

        DeleteResult deleteResult = superheroes.deleteOne(Filters.eq("name", "Superman"));
        System.out.println(String.format("Deleted %s document(s)", deleteResult.getDeletedCount()));

        long count = superheroes.count();
        System.out.println(String.format("Number of superheroes: %s", count));
    }
}