MongoDB Java 集成
MongoDB 提供了 Java 驱动程序,允许我们在 Java 应用程序中与 MongoDB 进行交互。通过 Java 驱动程序,我们可以执行各种操作,如插入、查询、更新和删除数据等。
基本概念
Java 驱动程序的类型
- MongoDB Java Driver: 官方提供的 Java 驱动程序。
- Spring Data MongoDB: 基于 MongoDB Java Driver 的封装,提供了更高级的 API。
在本章节中,我们将使用官方提供的 Java 驱动程序。
连接到 MongoDB
要连接到 MongoDB,我们需要使用 MongoClient 类。
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoDBConnection {
public static void main(String[] args) {
// 连接到 MongoDB 服务器
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
// 获取数据库
MongoDatabase database = mongoClient.getDatabase("mydatabase");
System.out.println("Connected to database successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}插入数据
插入单个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
public class MongoDBInsert {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 创建文档
Document document = new Document("name", "John")
.append("age", 30)
.append("email", "john@example.com")
.append("status", "active");
// 插入文档
collection.insertOne(document);
System.out.println("Document inserted successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}插入多个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
public class MongoDBInsertMany {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 创建文档列表
List<Document> documents = new ArrayList<>();
documents.add(new Document("name", "Jane")
.append("age", 25)
.append("email", "jane@example.com")
.append("status", "pending"));
documents.add(new Document("name", "Bob")
.append("age", 35)
.append("email", "bob@example.com")
.append("status", "inactive"));
// 插入文档列表
collection.insertMany(documents);
System.out.println("Documents inserted successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}查询数据
查询所有文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
public class MongoDBQuery {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 查询所有文档
FindIterable<Document> documents = collection.find();
// 遍历结果
for (Document document : documents) {
System.out.println(document);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}查询特定文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
public class MongoDBQuerySpecific {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 查询特定文档
Document query = new Document("name", "John");
FindIterable<Document> documents = collection.find(query);
// 遍历结果
for (Document document : documents) {
System.out.println(document);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}更新数据
更新单个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
public class MongoDBUpdate {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 更新单个文档
collection.updateOne(
Filters.eq("name", "John"),
Updates.set("age", 31)
);
System.out.println("Document updated successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}更新多个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
public class MongoDBUpdateMany {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 更新多个文档
collection.updateMany(
Filters.eq("status", "active"),
Updates.set("status", "pending")
);
System.out.println("Documents updated successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}删除数据
删除单个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
public class MongoDBDelete {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 删除单个文档
collection.deleteOne(Filters.eq("name", "Bob"));
System.out.println("Document deleted successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}删除多个文档
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import com.mongodb.client.model.Filters;
public class MongoDBDeleteMany {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 删除多个文档
collection.deleteMany(Filters.eq("status", "pending"));
System.out.println("Documents deleted successfully");
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}查询进阶
使用查询操作符
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
import com.mongodb.client.model.Filters;
public class MongoDBQueryOperators {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 使用查询操作符
FindIterable<Document> documents = collection.find(
Filters.and(
Filters.gt("age", 25),
Filters.eq("status", "active")
)
);
// 遍历结果
for (Document document : documents) {
System.out.println(document);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}排序和分页
java
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.FindIterable;
import org.bson.Document;
import com.mongodb.client.model.Sorts;
public class MongoDBQuerySort {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
MongoDatabase database = mongoClient.getDatabase("mydatabase");
MongoCollection<Document> collection = database.getCollection("mycollection");
// 排序和分页
FindIterable<Document> documents = collection.find()
.sort(Sorts.descending("age"))
.skip(1)
.limit(2);
// 遍历结果
for (Document document : documents) {
System.out.println(document);
}
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}总结
MongoDB Java 驱动程序允许我们在 Java 应用程序中与 MongoDB 进行交互。通过 Java 驱动程序,我们可以执行各种操作,如插入、查询、更新和删除数据等。在使用 Java 驱动程序时,我们应该注意连接管理、数据处理和错误处理等方面的问题,以确保应用程序的高效运行。