Tạo truy vấn thực sự chỉ là tạo biểu diễn tài liệu BSON, về cơ bản chỉ là giao diện giống như giao diện HashMap hoặc List tiêu chuẩn nếu thích hợp:
Document query = new Document("objectKey",new Document( "$regex","Bos"))
.append("cacheVersionString","08/03/15_11:05:09");
Document projection = new Document("_id",0)
.append("objectData",0)
.append("lastModified",0)
.append("productCode",0);
MongoCursor<Document> cursor = collection.find(query).projection(projection).iterator();
Trường hợp đó về cơ bản giống với cách bạn đang cấu trúc các truy vấn trong MongoDB shell.
Ngoài ra, bạn có thể sử dụng giao diện trình tạo nếu điều đó có vẻ hợp lý hơn với bạn:
QueryBuilder builder = QueryBuilder.start();
builder.and("objectKey").regex(Pattern.compile("box"));
builder.and("cache_version_string").is("08/03/15_11:05:09");
BasicDBObject query = (BasicDBObject)builder.get();
Bson projection = Projections.exclude(
"_id",
"obectdata",
"lasModified",
"productCode"
);
MongoCursor<Document> cursor = collection.find(query).projection(projection).iterator();
while (cursor.hasNext()) {
Document doc = cursor.next();
System.out.println(doc.toJson());
}
Về cơ bản, cả hai biểu mẫu đều cấu trúc BSON cho cả hai thành phần "truy vấn" và "chiếu" và cấp chúng dưới dạng đối số cho .find()
phương pháp. Ngoài ra còn có các định nghĩa loại lớp nếu phù hợp với bạn.