Truy vấn ví dụ khởi động mùa xuân mongodb
|
Trong hệ sinh thái mùa xuân, thật dễ dàng để định cấu hình, bật hoặc tắt các tính năng khác nhau thông qua các thuộc tính bên ngoài. Mẫu Mongo cũng không ngoại lệ và thật đơn giản khi thêm một lớp lót vào ứng dụng. tệp thuộc tính
Show
logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG
Tuy nhiên, nếu bạn đang sử dụng phiên bản phản ứng của Mẫu Mongo, cấu hình sẽ hơi khác một chút logging.level.org.springframework.data.mongodb.core.ReactiveMongoTemplate=DEBUG
Ngoài ra, vì các kho lưu trữ Dữ liệu Chuỗi được xây dựng trên Mẫu Mongo, nên tất cả các truy vấn được tạo bởi các kho lưu trữ sẽ được ghi lại tự động sau khi tính năng ghi nhật ký được bật @Bean
Đầu ra trong nhật ký 2022-05-17 20:15:03.115 DEBUG 36105 --- [ main] o.s.data.mongodb.core.MongoTemplate : Remove using query: {} in collection: product.2022-05-17 20:15:03.135 INFO 36105 --- [ main] org.mongodb.driver.connection : Opened connection [connectionId{localValue:3, serverValue:12}] to localhost:270172022-05-17 20:15:03.183 DEBUG 36105 --- [ main] o.s.data.mongodb.core.MongoTemplate : Inserting Document containing fields: [name, _class] in collection: product2022-05-17 20:15:03.210 DEBUG 36105 --- [ main] o.s.data.mongodb.core.MongoTemplate : find using query: {} fields: Document{{}} for class: class com.sabljakovic.mongospringdemo.Product in collection: product2022-05-17 20:15:03.235 DEBUG 36105 --- [ main] o.s.data.mongodb.core.MongoTemplate : Executing count: {} in collection: product Như chúng ta có thể thấy, Trình ghi mẫu Mongo không ghi lại các truy vấn thô mà chúng ta thực hiện và thực hiện trực tiếp trong trình bao mongo. Tuy nhiên, điều này có thể hữu ích để gỡ lỗi trong một số tình huống nhất định Trang này sẽ xem qua các ví dụ về chú thích của Spring Data MongoDB@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3. Chú thích
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 khai báo các truy vấn tìm kiếm trực tiếp trên các phương thức kho lưu trữ. Nó cũng cho phép sử dụng ký hiệu giữ chỗ của ?0, ?1, v.v. Tìm các phần tử của chú thích
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3giá trị. Lấy truy vấn dưới dạng chuỗi JSON loại. Xác định thứ tự sắp xếp mặc định lĩnh vực. Xác định các trường sẽ được trả về bởi truy vấn tồn tại. Giá trị Boolean để quyết định xem có nên thực hiện truy vấn dưới dạng phép chiếu tồn tại hay không xóa bỏ. Giá trị boolean để quyết định xem truy vấn có nên xóa các tài liệu phù hợp hay không đếm. Giá trị boolean để quyết định xem có nên thực hiện truy vấn dưới dạng phép chiếu đếm hay không đối chiếu. Xác định đối chiếu để áp dụng khi thực hiện truy vấn Ở đây trên trang này, chúng ta sẽ thảo luận chi tiết về việc sử dụng các yếu tố của @Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 với các ví dụ
1. Công nghệ được sử dụngTìm các công nghệ đang được sử dụng trong ví dụ của chúng tôi1. java11 2. mùa xuân 5. 1. 9. PHÓNG THÍCH 3. Dữ liệu mùa xuân 2. 1. 10. PHÓNG THÍCH 4. Khởi động mùa xuân 2. 1. 7. PHÓNG THÍCH 5. Máy chủ MongoDB 4. 0 6. maven 3. 5. 2 2. giá trị@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 7 cần một truy vấn ở định dạng JSON. Tìm một phương thức được chú thích bằng
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 sẽ lấy dữ liệu cho id đã cho
@Component
public interface BookRepository extends MongoRepository {
@Query(value = "{id : ?0}")
Book findBookById(int id);
}
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
}
Tìm thêm một ví dụ
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
}
Truy vấn trên sẽ tìm nạp dữ liệu dưới dạng Java
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 9 để khớp 'nhà văn' và 'danh mục'. Trong khi tìm nạp dữ liệu từ
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 9, chúng tôi cần đóng nó. Để thuận tiện, chúng ta có thể sử dụng Java Try-With-Resources sẽ tự động đóng
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 9 sau khi sử dụng
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
}
2. 1 Sử dụng gt (>) và lt (We can use gt (>) and lt (<) with@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 in JSON query. For gt (>) we need to use
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 3 and for lt (<), we need to use
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 4.Tìm ví dụ cho try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 3
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages);
Phương thức trên sẽ trả về dữ liệu có
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 6 lớn hơn giá trị đã cho
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 6Tìm ví dụ cho try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 4
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages);
Phương thức trên sẽ trả về dữ liệu có thuộc tính
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 9 khớp với giá trị
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 9 đã cho và
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 6 nhỏ hơn giá trị
try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
stream.forEach(book -> System.out.println(book));
} 6 đã cho
2. 2 nhà điều hành. VÀ, HOẶC@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 trong MongoDB sử dụng
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 4 cho toán tử OR và nó sử dụng
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 5 cho toán tử AND. Cú pháp của
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 4 như sau. Kết quả sẽ được điền trước bằng cách sử dụng điều kiện {} đầu tiên và nếu không có dữ liệu thì
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 4 sẽ sử dụng điều kiện {} thứ haiTìm ví dụ cho toán tử @Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 4
@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category);
Tìm ví dụ cho toán tử
@Query("{noOfPages : {$gt: ?0}}")
Stream findBooksGtThanNoOfPages(int noOfPages); 5
@Query("{$and : [{$or : [{noOfPages: {$gt: 275}}, {noOfPages : {$lt: 200}}]}, {$or : [{id: {$gt: 103}}, {id : {$lt: 102}}]}]}")
Stream findBestBooks();
3. lĩnh vựcPhần tử@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 0 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 xác định các trường sẽ được trả về cho truy vấn đã cho. Đối tượng miền sẽ chỉ giữ giá trị trong các trường được chỉ định và trường
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 2 và các trường còn lại sẽ là null. Chúng ta cần đặt giá trị trường bằng 1 để điền giá trị của nó. Các trường của tên miền đã được đặt thành 0 hoặc không được chỉ định sẽ có giá trị null. Tìm ví dụ
@Query(value = "{writer : ?0, category : ?1}", fields = "{ 'title' : 1, 'noOfPages' : 1, 'writer' : 1}")
Stream findBooksWithCertainFields(String writer, String category);
4. đếmPhần tử@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 3 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 quyết định xem truy vấn được xác định có nên được thực thi dưới dạng phép chiếu đếm hay không.
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 3 được gán làm giá trị Boolean. Khi chúng tôi chỉ định
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 6, phương thức trả về số lượng kết quả truy vấn. Tìm ví dụ
@Query(value = "{category : ?0}", count = true)
Integer findBookCountByCategory(String category);
5. tồn tạiPhần tử@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 7 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 quyết định liệu truy vấn được xác định có nên được thực thi dưới dạng phép chiếu tồn tại hay không.
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 7 được gán làm giá trị Boolean. Khi chúng ta chỉ định
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 6, phương thức trả về giá trị true/false. Nếu các phương thức trả về false, điều đó có nghĩa là số lượng kết quả truy vấn bằng 0
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 0
6. loạiPhần tử@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 1 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 xác định thứ tự sắp xếp mặc định cho truy vấn đã cho. Giá trị -1 được sử dụng cho thứ tự giảm dần và 1 được sử dụng cho thứ tự tăng dần. Tìm ví dụa. Sắp xếp dữ liệu theo thứ tự tăng dần của @Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 3
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 1
b. Sắp xếp dữ liệu theo thứ tự giảm dần của
@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 3
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 2
Chúng ta cũng có thể thay đổi hành vi sắp xếp mặc định bằng cách chuyển đối tượng Spring Data
@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 5 làm đối số của phương thức
7. xóa bỏPhần tử@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 6 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 quyết định liệu truy vấn có nên xóa các tài liệu phù hợp hay không.
@Query("{$or : [{writer: ?0}, {category : ?1}]}")
Stream findBooksByWriterOrCategory(String writer, String category); 6 được gán làm giá trị Boolean. Khi chúng tôi chỉ định
@Query("{writer : ?0, noOfPages : {$lt: ?1}}")
Stream findBooksByWriterAndLtThanNoOfPages(String writer, int noOfPages); 6, phương thức này sẽ xóa dữ liệu khớp với truy vấn và trả về số lượng hàng đã xóa
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 3
8. đối chiếuPhần tử@Query("{$and : [{$or : [{noOfPages: {$gt: 275}}, {noOfPages : {$lt: 200}}]}, {$or : [{id: {$gt: 103}}, {id : {$lt: 102}}]}]}")
Stream findBestBooks(); 0 của
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3 xác định phép đối chiếu sẽ áp dụng khi thực hiện truy vấn. Tìm ví dụ
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 4
9. Hoàn thành ví dụTìm cấu trúc dự án trong Eclipse@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 5
MongoDBConfig. java
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 6
Sách. java
@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 7
Điền dữ liệu để kiểm traChuẩn bị dữ liệuForQuery. java @Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 8
Chúng tôi sẽ nhận được dữ liệu sau trong kho lưu trữ MongoDB của chúng tôi@Component
public interface BookRepository extends MongoRepository {
@Query("{id : ?0}")
Book findBookById(int id);
} 9
Bây giờ hãy tìm lớp kho lưu trữ đang sử dụng chú thích
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 3Kho lưu trữ sách. java @Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 0
Kiểm tra truy vấn. java
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 1
đầu ra
@Component
public interface BookRepository extends MongoRepository {
@Query("{writer : ?0, category : ?1}")
Stream findBooksByWriterAndCategory(String writer, String category);
} 2
10. Người giới thiệuDữ liệu mùa xuân MongoDB. @Truy vấnDữ liệu mùa xuân Tham khảo MongoDB 11. Tải xuống mã nguồnLàm cách nào để truy vấn MongoDB trong Spring Boot?
Về cơ bản, có 4 cách để chúng ta có thể truy vấn MongoDB từ ứng dụng khởi động mùa xuân. .
Các phương thức được tạo tự động với kho lưu trữ Mongo
Sử dụng Chú thích @Query
Sử dụng Truy vấn tiêu chí với MongoTemplate
Sử dụng Truy vấnDSL
Làm cách nào để lấy các trường cụ thể từ MongoDB trong Spring Boot?
Chỉ trả về các trường cụ thể cho một truy vấn trong Spring Data MongoDB .
Tổng quan. Khi sử dụng Spring Data MongoDB, chúng ta có thể cần hạn chế các thuộc tính được ánh xạ từ một đối tượng cơ sở dữ liệu. .
Hạn chế các trường MongoDB bằng phép chiếu. .
Thực hiện phép chiếu. .
Kiểm tra bằng MongoRepository và MongoTemplate. .
Phần kết luận
Làm cách nào để thực thi truy vấn trong MongoDB bằng Java?
Làm cách nào để thực thi MongoDB trong chương trình Java? .
Kết nối cơ sở dữ liệu
Tạo kết nối
Chọn một kết nối
Chèn một tài liệu
Truy xuất tất cả tài liệu
Xóa tài liệu
Cập nhật tài liệu
Chúng tôi có thể sử dụng JPA với MongoDB không?
Các lớp thực thể JPA
|
