安装或设置

条件

一个正在运行的 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));
    }
}