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 com.mongodb.client.model.Filters;
import com.mongodb.client.model.Sorts;
import org.bson.Document;
import java.util.ArrayList;
import java.util.List;
public class MongoDBExample {
public static void main(String[] args) {
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("yourDatabase");
MongoCollection<Document> collection = database.getCollection("yourCollection");
// 分页参数
int page = 1;
int pageSize = 10;
int skip = (page - 1) * pageSize;
// 精确查询
String exactFieldName = "fieldName";
String exactFieldValue = "value";
// 模糊查询
String fuzzyFieldName = "fieldName";
String fuzzyFieldValue = "value";
// 时间区间查询
String dateFieldName = "dateField";
long startTime = 1609459200L; // Unix时间戳
long endTime = 1612137599L; // Unix时间戳
// 排序字段
String sortFieldName = "sortField";
int sortDirection = 1; // 1为升序, -1为降序
// 创建查询条件
List<Document> filters = new ArrayList<>();
filters.add(new Document(exactFieldName, exactFieldValue));
filters.add(new Document(fuzzyFieldName, new Document("$regex", fuzzyFieldValue).append("$options", "i")));
filters.add(new Document(dateFieldName, new Document("$gte", startTime).append("$lte", endTime)));
Document query = new Document();
if (!filters.isEmpty()) {
for (Document filter : filters) {
query.putAll(filter);
}
}
// 排序
Document sort = new Document(sortFieldName, sortDirection);
// 执行查询
FindIterable<Document> iterable = collection.find(query).skip(skip).limit(pageSize).sort(sort);
for (Document doc : iterable) {
System.out.println(doc.toJson());
}
// 关闭客户端
mongoClient.close();
}
}
这段代码展示了如何使用MongoDB的Java驱动进行分页查询、精确查询、模糊查询、时间区间查询以及排序。它使用了MongoClients.create
来创建MongoDB客户端,并通过getDatabase
和getCollection
方法选定数据库和集合。使用find
方法进行查询,并结合skip
和limit
实现分页,使用sort
方法实现排序。最后,使用\`toJso