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); }3 giá 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)); }6 Tì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ứ hai Tì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); }1b. 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); }2Chú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 Eclipsequả bông. xml@Component public interface BookRepository extends MongoRepository { @Query("{id : ?0}") Book findBookById(int id); }5MongoDBConfig. java @Component public interface BookRepository extends MongoRepository { @Query("{id : ?0}") Book findBookById(int id); }6Sách. java @Component public interface BookRepository extends MongoRepository { @Query("{id : ?0}") Book findBookById(int id); }7Điền dữ liệu để kiểm tra Chuẩn bị dữ liệuForQuery. java @Component public interface BookRepository extends MongoRepository { @Query("{id : ?0}") Book findBookById(int id); }8Chú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); }9Bâ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); }3 Kho lưu trữ sách. java @Component public interface BookRepository extends MongoRepository { @Query("{writer : ?0, category : ?1}") Stream findBooksByWriterAndCategory(String writer, String category); }0Kiể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
|