安装或设置
条件
一个正在运行的 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));
}
}