Tiêu chí Mùa xuân MongoDB

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không?

tổ chức. khung mùa xuân. dữ liệu. mongodb. cốt lõi. truy vấnCriteriawhere

Javadoc

Phương thức xuất xưởng tĩnh để tạo Tiêu chí bằng khóa được cung cấp

Các phương pháp tiêu chí phổ biến

  • Tạo một tiêu chí bằng cách sử dụng bình đẳng

  • Trong

    Tạo tiêu chí bằng cách sử dụng toán tử $in

  • Phương thức xuất xưởng tĩnh để tạo Tiêu chí bằng khóa được cung cấp

  • và Toán tử

    Tạo tiêu chí 'và' bằng cách sử dụng toán tử $and cho tất cả các tiêu chí được cung cấp. Lưu ý rằng mongod

  • trung úy

    Tạo tiêu chí bằng toán tử $lt

  • lte

    Tạo tiêu chí bằng toán tử $lte

  • gte

    Tạo tiêu chí bằng toán tử $gte

  • biểu thức chính quy
  • tồn tại

    Tạo một tiêu chí bằng cách sử dụng toán tử $exists

  • hoặc Toán tử

    Tạo một tiêu chí 'hoặc' bằng cách sử dụng toán tử $or cho tất cả các tiêu chí được cung cấp Lưu ý rằng mongodb

  • gt

    Tạo tiêu chí bằng cách sử dụng toán tử $gt

  • hoặc Toán tử,
  • gt,
  • không,
  • tất cả các,
  • không phải,
  • elemMatch,
  • nin,
  • kích thước,
  • ở trong

Phổ biến trong Java

  • Thực hiện yêu cầu http sử dụng okhttp
  • setScale (Số thập phân lớn)
  • setContentView (Hoạt động)
  • lịch trìnhAtFixedRate (Dịch vụ theo lịch trìnhExecutor)
  • Graphics2D (java. awt)

    Lớp Graphics2D này mở rộng lớp Graphics để cung cấp các overgraphic điều khiển tinh vi hơn

  • Proxy (java. mạng)

    Lớp này đại diện cho cài đặt máy chủ proxy. Một phiên bản được tạo của Proxy lưu trữ một loại và một địa chỉ

  • NoSuchElementException (java. sử dụng)

    Bị ném khi cố truy xuất một phần tử sau khi kết thúc Enumeration hoặc Iterator

  • Bộ lọc (javax. máy chủ)

    Bộ lọc là một đối tượng thực hiện các tác vụ lọc theo yêu cầu đối với tài nguyên (một servlet o

  • JTextField (javax. xích đu)
  • Base64 (tổ chức. apache. của chung. giải mã. nhị phân)

    Cung cấp mã hóa và giải mã Base64 theo định nghĩa của RFC 2045. Lớp này thực hiện phần 6. 8. Cơ sở

  • Các plugin hàng đầu cho Android Studio

Bài viết này giải thích cách sử dụng truy vấn tiêu chí để tìm nạp dữ liệu từ MongoDB với Ứng dụng khởi động mùa xuân. Có rất nhiều toán tử truy vấn có sẵn trong MongoDB. Trong bài viết này, chúng ta hãy xem cách sử dụng các toán tử đó trong truy vấn tiêu chí và một số phương thức truy vấn khác của MongoDB

Toán tử của MongoDB được phân loại là Toán tử truy vấn (hoặc) Bộ chọn truy vấn, Toán tử chiếu và Toán tử khác. Toán tử truy vấn được phân loại là Toán tử so sánh, logic, phần tử, đánh giá, không gian địa lý, mảng và bit

Trong bài viết này, chúng ta hãy xem cách sử dụng tất cả các toán tử từ So sánh và Lôgic trong Truy vấn Tiêu chí

Toán tử so sánh của MongoDB

Có rất nhiều Toán tử so sánh có sẵn trong MongoDB. Đó là $eq, $ne, $gt, $gte, $lt, $lte, $in và $nin

Cách sử dụng toán tử $eq và $ne

Toán tử $eq kiểm tra xem giá trị trường có bằng nhau hay không. Trong Spring Boot Data MongoDB, toán tử $eq không khả dụng thay vào đó toán tử $is thực hiện điều tương tự. Chúng ta hãy xem ví dụ dưới đây

//List of records from user_profile collection
[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    },
   {
        "_id": "60e3451066e0c711cd5cdf52",
        "firstName": "Raja",
        "lastName": "Sekar",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "ADMIN"
        ]
   }
]

Trên đây là danh sách dữ liệu của tập hợp "user_profile" của MongoDB được tuần tự hóa với thực thể java ProfileVO. Xin lưu ý rằng chúng tôi phải thực hiện tất cả các truy vấn với danh sách dữ liệu trên

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);

Truy vấn trên trả về danh sách các bản ghi có họ bằng với tên 'Paul'. Lưu ý rằng theo mặc định, tất cả các truy vấn MongoDB đều phân biệt chữ hoa chữ thường. Đầu ra dưới đây

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]

Toán tử $ne kiểm tra xem giá trị trường không bằng nhau hay không. Chúng ta hãy xem ví dụ dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").ne("Paul"));
return mongoTemplate.find(query, ProfileVO.class);

Truy vấn trên trả về danh sách các bản ghi có họ không bằng tên 'Paul'. Đầu ra dưới đây

[
  {
        "_id": "60e3451066e0c711cd5cdf52",
        "firstName": "Raja",
        "lastName": "Sekar",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "ADMIN"
        ]
   }
]

Cách sử dụng toán tử $gt và $gte

Toán tử $gt kiểm tra xem giá trị trường có lớn hơn hay không và toán tử $gte kiểm tra xem giá trị trường có lớn hơn hoặc bằng hay không. Hãy xem các ví dụ của cả hai

Query query = new Query();
query.addCriteria(Criteria.where("age").gt(30));
return mongoTemplate.find(query, ProfileVO.class);

Truy vấn trên trả về danh sách các bản ghi có tuổi lớn hơn 30. Đầu ra dưới đây

[
  {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]        
    }
]
Query query = new Query();
query.addCriteria(Criteria.where("age").gte(30));
return mongoTemplate.find(query, ProfileVO.class);

Truy vấn trên trả về danh sách các bản ghi có tuổi lớn hơn hoặc bằng 30. Đầu ra dưới đây

________số 8_______

Cách sử dụng toán tử $lt và $lte

Toán tử $lt kiểm tra xem giá trị trường có nhỏ hơn hay không và toán tử $lte kiểm tra xem giá trị trường có nhỏ hơn hoặc bằng hay không. Tôi nghĩ không cần ví dụ ở đây, Hy vọng bạn có thể tự kiểm tra nó

Cách sử dụng toán tử $in và $nin

Toán tử $in kiểm tra xem giá trị trường có chứa giá trị đã chỉ định hay không. Ở đây trường chứa mảng giá trị. Hãy xem ví dụ dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("roles").in("ADMIN"));
return mongoTemplate.find(query, ProfileVO.class);

Truy vấn trên trả về danh sách các bản ghi trong đó trường 'vai trò' chứa giá trị được chỉ định 'QUẢN TRỊ'. Đầu ra dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
0

Toán tử $nin kiểm tra xem giá trị trường có chứa giá trị đã chỉ định hay không. Ở đây trường chứa mảng giá trị. Hãy xem ví dụ dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
1

Truy vấn trên trả về danh sách các bản ghi trong đó trường 'vai trò' không chứa giá trị được chỉ định 'QUẢN TRỊ'. Đầu ra dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
2

Tôi hy vọng bạn hiểu cách sử dụng Toán tử so sánh. Bây giờ hãy xem các toán tử logic

Toán tử logic của MongoDB

Chúng ta có thể sử dụng Toán tử logic để chỉ định logic dựa trên nhu cầu của mình với truy vấn tiêu chí. Nhiều toán tử có sẵn là $and, $not, $or và $nor. Hãy xem từng người một

Cách sử dụng toán tử $and và $or

Toán tử $and kết hợp nhiều truy vấn với logic AND. Ví dụ: nếu chúng ta nối hai logic truy vấn khác nhau với toán tử $and thì nó sẽ trả về giá trị khi cả hai logic đều đúng. Hãy xem ví dụ dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
3

Một cách khác để viết truy vấn toán tử $and bên dưới

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
4

Hai định dạng truy vấn trên với toán tử $and trả về danh sách các bản ghi trong đó trường 'FirstName' khớp với 'Nivin' và trường 'lastName' khớp với 'Paul'. Đầu ra dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
2

Toán tử $or cũng tham gia nhiều truy vấn tiêu chí có logic khác nhau với logic OR. Nó trả về danh sách các bản ghi nếu bất kỳ logic nào là đúng. Truy vấn bên dưới trả về danh sách các bản ghi trong đó 'FirstName' khớp với 'Nivin' hoặc 'lastName' khớp với 'Sekar'

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
6
Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
7

Cách sử dụng toán tử $nor và $not

Toán tử $nor kết hợp nhiều truy vấn tiêu chí có logic khác nhau với logic NOR. Nó trả về danh sách các bản ghi nếu tất cả logic không thành công. Ví dụ dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
8

Truy vấn trên trả về danh sách các bản ghi trong đó trường 'firstName' không khớp với 'Nivin' và trường 'lastName' không khớp với 'Sekar'. Đầu ra dưới đây

Query query = new Query();
query.addCriteria(Criteria.where("lastName").is("Paul"));
return mongoTemplate.find(query, ProfileVO.class);
9

Trong Spring Data MongoDB không có toán tử $not thay vào đó chúng ta có thể sử dụng toán tử $ne. Cả hai đều làm cùng một công việc. Tôi hy vọng bạn đã hiểu cách sử dụng các toán tử logic với truy vấn tiêu chí trong Ứng dụng Spring Boot

Bây giờ chúng ta hãy xem thêm một số phương thức mặc định của MongoTemplate để truy vấn MonfoDB

Lưu hoặc Chèn

Lưu hoặc Chèn chèn bản ghi mới vào bộ sưu tập MongoDB. Ví dụ cho cả hai là dưới đây

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
0
[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
1

Các phương thức trên lưu bản ghi trên vào bộ sưu tập của MongoDB. nếu chúng ta muốn lưu nhiều bản ghi thì chúng ta có thể sử dụng ví dụ dưới đây với hàm insertAll() của MongoTemplate

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
2

upsert, updateFirst và updateMulti

Phương thức upert cập nhật bản ghi khớp với truy vấn hoặc chèn bản ghi mới nếu không khớp với truy vấn. Truy vấn dưới đây thực hiện điều đó

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
3

Phương thức updateFirst cập nhật bản ghi đầu tiên dựa trên thứ tự chèn và dựa trên truy vấn. Ngay cả khi truy vấn khớp với nhiều bản ghi, nó chỉ cập nhật bản ghi khớp đầu tiên. Phương thức updateMulti cập nhật nhiều bản ghi khớp với truy vấn. Truy vấn dưới đây thực hiện cả hai

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
4

Đếm, Bỏ qua và Giới hạn

Phương thức count trả về số lượng bản ghi của một bộ sưu tập dựa trên truy vấn mà chúng ta viết trong đó. Nó trả về số đếm dưới dạng kiểu dài. Phương thức bỏ qua bỏ qua bản ghi dựa trên số chúng tôi chỉ định trong đó và trả về các bản ghi dựa trên truy vấn

Giới hạn phương thức giới hạn các bản ghi tìm nạp. Ví dụ: nếu chúng tôi cung cấp bất kỳ số nào bên trong phương thức giới hạn thì nó chỉ tìm nạp số lượng bản ghi đó. Đoạn mã dưới đây là ví dụ cho tất cả

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
5

Truy vấn trên trả về số lượng bản ghi có tuổi lớn hơn 30. Nó trả về đầu ra là 1

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
6

Truy vấn trên chỉ trả về một bản ghi dựa trên giới hạn và bỏ qua một bản ghi dựa trên thứ tự chèn và phù hợp với tiêu chí. Đầu ra cho truy vấn trên là bên dưới

[
    {
        "_id": "60e3451066e0c711cd5cdf50",
        "firstName": "John",
        "lastName": "Paul",
        "age": 30,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER", "ADMIN"
        ]
    },
   {
        "_id": "60e3451066e0c711cd5cdf51",
        "firstName": "Nivin",
        "lastName": "Paul",
        "age": 35,
        "_class": "com.tipstocode.model.ProfileVO",
        "roles": [
            "USER"
        ]       
    }
]
7

Tôi hy vọng bạn đã hiểu tất cả các truy vấn tiêu chí với logic khác nhau bằng cách sử dụng các toán tử khác nhau và một số phương pháp cơ bản để truy vấn MongoDB. Một số phương thức truy vấn khác có sẵn trong các bài viết Thao tác thô cơ bản với MongoDB và Các loại truy vấn tìm kiếm khác nhau trong MongoDB

Tiêu chí MongoDB là gì?

Tất cả truy vấn trong Mongoid đều là Mongoid. Criteria , là trình bao bọc có thể xâu chuỗi và được đánh giá tùy ý cho truy vấn động MongoDB . Các tiêu chí chỉ chạm vào cơ sở dữ liệu khi chúng cần, chẳng hạn như khi lặp lại kết quả và khi được thực thi, hãy quấn một con trỏ để giữ cho việc quản lý bộ nhớ và hiệu suất có thể dự đoán được.

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

Chú thích @Query khá đơn giản và dễ hiểu. @Query("mongo query") public List Khi phương thức findBy() được gọi, .

Là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

@document vào mùa xuân là gì?

Chú thích @Document . Tham số phù hợp nhất là giá trị để chỉ định tên bộ sưu tập trong cơ sở dữ liệu. Chú thích @Document chỉ định loại bộ sưu tập cho DOCUMENT. The annotations @Document applied to a class marks this class as a candidate for mapping to the database. The most relevant parameter is value to specify the collection name in the database. The annotation @Document specifies the collection type to DOCUMENT .