Làm cách nào để sử dụng chú thích @query cho MongoDB?

Khởi động mùa xuân MongoDB @Ví dụ truy vấn, Truy vấn dữ liệu mùa xuân MongoDB, Chú thích @Query trong Spring Boot MongoDB, Truy vấn dữ liệu mùa xuân MongoDB, ví dụ khởi động mùa xuân @Query mongodb, truy vấn mongodb, mùa xuân mongodb

Vui lòng để trống trường này

Địa chỉ email *

Bạn đã đăng ký thành công bản tin của chúng tôi

Chú thích để 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ữ. Cả hai thuộc tính đều cho phép sử dụng ký hiệu giữ chỗ của ?0, ?1, v.v.

Tác giả. Diễn viên: Oliver GierkeThomas DaimontChristoph StroblMark Paluch
  • Tóm tắt yếu tố tùy chọn

    Xác định đối chiếu để áp dụng khi thực hiện truy vấn

    Trả về liệu 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

    Trả về liệu truy vấn có nên xóa các tài liệu phù hợp hay không

    Trả về liệu truy vấn được xác định có nên được thực hiện dưới dạng phép chiếu tồn tại hay không

    Xác định các trường sẽ được trả về cho truy vấn đã cho. Lưu ý rằng chỉ những trường này mới biến nó thành đối tượng miền được trả về

    public interface PersonRepository extends MongoRepository {
    
      // {'geoNear' : 'location', 'near' : [x, y] }
      GeoResults findByLocationNear(Point location);
    
      // No metric: {'geoNear' : 'person', 'near' : [x, y], maxDistance : distance }
      // Metric: {'geoNear' : 'person', 'near' : [x, y], 'maxDistance' : distance,
      //          'distanceMultiplier' : metric.multiplier, 'spherical' : true }
      GeoResults findByLocationNear(Point location, Distance distance);
    
      // Metric: {'geoNear' : 'person', 'near' : [x, y], 'minDistance' : min,
      //          'maxDistance' : max, 'distanceMultiplier' : metric.multiplier,
      //          'spherical' : true }
      GeoResults findByLocationNear(Point location, Distance min, Distance max);
    
      // {'geoNear' : 'location', 'near' : [x, y] }
      GeoResults findByLocationNear(Point location);
    }
    
    Trang này sẽ hướng dẫn qua Spring Data MongoDB
    @Component
    public interface BookRepository extends MongoRepository {
            @Query("{writer : ?0, category : ?1}")
            Stream findBooksByWriterAndCategory(String writer, String category);
    } 
    3 ví dụ về chú thích. 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ụng

    Tìm các công nghệ đang được sử dụng trong ví dụ của chúng tôi
    1. 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);
    } 

    Nó cũng có thể được viết như sau

    ________số 8_______

    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ị
    try (Stream stream = repository.findBooksByWriterAndCategory("Krishna", "Frontend")) {
         stream.forEach(book -> System.out.println(book));
    } 
    6 đã cho
    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ực

    Phầ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. đếm

    Phầ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ại

    Phầ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ại

    Phầ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ếu

    Phầ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

    Làm cách nào để sử dụng chú thích @query cho MongoDB?

    quả bông. xml

    @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 tra
    Chuẩ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);
    } 
    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);
    } 
    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ệu

    Dữ liệu mùa xuân MongoDB. @Truy vấn
    Dữ liệu mùa xuân Tham khảo MongoDB

    11. Tải xuống mã nguồn

    Chú thích @query hoạt động như thế nào?

    Chú thích @Query được ưu tiên hơn các truy vấn được đặt tên, được chú thích bằng @NamedQuery hoặc được xác định trong một orm. tệp xml . Đó là một cách tiếp cận tốt để đặt định nghĩa truy vấn ngay phía trên phương thức bên trong kho lưu trữ thay vì bên trong mô hình miền của chúng tôi dưới dạng truy vấn được đặt tên.

    Làm cách nào để thực thi truy vấn gốc MongoDB trong Java?

    parse(strCmd); // Thực thi truy vấn gốc Kết quả tài liệu = db. runCommand​(bsonCmd); . get("con trỏ"); . get("Batch đầu tiên"); .

    Chúng tôi có thể viết các truy vấn trong MongoDB không?

    Các truy vấn MongoDB cung cấp sự đơn giản trong quá trình tìm nạp dữ liệu từ cơ sở dữ liệu , tương tự như các truy vấn SQL trong ngôn ngữ Cơ sở dữ liệu SQL. Trong khi thực hiện thao tác truy vấn, người ta cũng có thể sử dụng tiêu chí hoặc điều kiện có thể được sử dụng để truy xuất dữ liệu cụ thể từ cơ sở dữ 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