MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Các toán tử mẫu MongoDB

Toán tử có điều kiện MongoDB chỉ định một điều kiện mà giá trị của trường tài liệu sẽ tương ứng.

Toán tử truy vấn so sánh

  • $ eq (ngang nhau)
  • $ ne (không bằng)
  • $ gt (nhiều hơn)
  • $ lt (nhỏ hơn)
  • $ gte (nhiều hơn hoặc bằng)
  • $ lte (ít hơn hoặc bằng)
  • $ trong xác định một mảng giá trị, một trong số đó phải có trường tài liệu
  • $ nin xác định một mảng giá trị không được có trường tài liệu

Ví dụ:chúng tôi sẽ tìm thấy tất cả các tài liệu có giá trị khóa tuổi nhỏ hơn 30:

db.users.find ({age: {$lt : 30}})

Việc sử dụng các toán tử so sánh khác sẽ tương tự. Ví dụ, cùng một khóa, chỉ hơn 30:

db.users.find ({age: {$gt : 30}})

Lưu ý rằng so sánh ở đây được thực hiện trên các loại số nguyên, không phải chuỗi. Nếu tuổi khóa đại diện cho các giá trị chuỗi thì việc so sánh phải được thực hiện trên các dòng:db.users.find ({age:{$ gt:“30”}}), nhưng kết quả sẽ giống nhau.

Nhưng hãy tưởng tượng một tình huống mà chúng ta phải tìm tất cả các tập có giá trị trường tuổi lớn hơn 30 nhưng nhỏ hơn 50. Trong trường hợp này, chúng ta có thể kết hợp hai toán tử:

db.users.find ({age: {$gt : 30, $lt: 50}})

Chúng tôi sẽ tìm những người dùng có độ tuổi là 22:

db.users.find ({age: {$eq : 22}})

Về bản chất, đây là tương tự của truy vấn tiếp theo:

db.users.find ({age: 22})

Thao tác ngược - tìm người dùng KHÔNG phải 22 tuổi:

db.users.find ({age: {$ne : 22}})

Toán tử $ in xác định một mảng các biểu thức có thể có và tìm kiếm các khóa có giá trị trong mảng:

db.users.find ({age: {$in : [22, 32]}})

Ngược lại, toán tử $ nin xác định một mảng các biểu thức có thể có và tìm kiếm những khóa có giá trị không có trong mảng này:

db.users.find ({age:{$ nin:[22, 32]}})

Toán tử logic

Toán tử logic được thực thi theo các điều kiện lấy mẫu:

  • $ hoặc :kết nối hai điều kiện và tài liệu phải đáp ứng một trong các điều kiện này
  • $ và: kết nối hai điều kiện và tài liệu phải đáp ứng cả hai điều kiện
  • $ không: tài liệu KHÔNG được phù hợp với điều kiện
  • $ cũng không phải: kết nối hai điều kiện và tài liệu KHÔNG được đáp ứng cả hai điều kiện

Các toán tử mẫu MongoDB

Toán tử $ hoặc đại diện cho một phép toán OR logic và xác định một tập hợp các cặp khóa-giá trị phải có trong tài liệu. Và nếu một tài liệu có ít nhất một cặp khóa-giá trị như vậy, thì nó tương ứng với truy vấn này và được trích xuất từ ​​cơ sở dữ liệu:

db.users.find ({$or : [{name: "Tom"}, {age: 22}]})

Biểu thức này sẽ trả về tất cả các tài liệu có tên =Tom hoặc age =22.

Một ví dụ khác sẽ trả về tất cả các tài liệu có tên =Tom và age =22 hoặc bằng “german” trong số các giá trị ngôn ngữ:

db.users.find ({name: "Tom", $or : [{age: 22}, {languages: "german"}]})

Các toán tử có điều kiện có thể được sử dụng trong biểu thức con hoặc biểu thức con:

db.users.find ({$or : [{name: "Tom"}, {age: {$gte:30}}]})

Trong trường hợp này, chúng tôi chọn tất cả các tài liệu có tên =”Tom” hoặc trường tuổi có giá trị từ 30 trở lên.

Toán tử $ và

Toán tử $ và đại diện cho một phép toán logic AND (phép nhân logic) và xác định một bộ tiêu chí mà tài liệu phải đáp ứng. Không giống như toán tử $ hoặc, tài liệu phải đáp ứng tất cả các tiêu chí được chỉ định. Ví dụ:

db.users.find ({$and : [{name: "Tom"}, {age: 32}]})

Ở đây, các tài liệu được chọn phải có tên Tom và tuổi 32 - cả hai đặc điểm này.

Tìm kiếm mảng MongoDB

Một số toán tử được thiết kế để hoạt động với mảng:

  • $ tất cả: xác định một tập hợp các giá trị sẽ tồn tại trong một mảng
  • $ size: xác định số phần tử phải có trong một mảng
  • $ elemMatch: chỉ định điều kiện mà các phần tử trong mảng phải tương ứng với nhau

MongoDB $ all

Toán tử $ all xác định một mảng các biểu thức có thể có và yêu cầu tài liệu phải có toàn bộ tập hợp các biểu thức đã xác định. Theo đó, nó được sử dụng để tìm kiếm mảng. Ví dụ:các tài liệu có một loạt các ngôn ngữ lưu trữ các ngôn ngữ nước ngoài mà người dùng nói. Và để tìm tất cả những người nói cả tiếng Anh và tiếng Pháp cùng một lúc, chúng ta có thể sử dụng biểu thức sau:

db.users.find ({languages: {$all : ["english", "french"]}})

Nhà điều hành $ elemMatch

Toán tử $ elemMatch cho phép bạn chọn tài liệu trong đó mảng chứa các phần tử thuộc các điều kiện nhất định. Ví dụ:hãy để cơ sở dữ liệu chứa một bộ sưu tập xếp hạng của người dùng cho các khóa học cụ thể. Hãy để chúng tôi thêm một vài tài liệu:

db.grades.insertMany([{student: "Tom", courses:[{name: "Java", grade: 5}, {name: "MongoDB", grade: 4}]},
{student: "Alice", courses:[{name: "C++", grade: 3}, {name: "MongoDB", grade: 5}]}))

Mỗi tài liệu có một mảng, lần lượt bao gồm các tài liệu lồng nhau.

Bây giờ chúng ta sẽ tìm những sinh viên có điểm trên 3 cho khóa học MongoDB:

db.grades.find({courses: {$elemMatch: {name: "MongoDB", grade: {$gt: 3}}}})

Toán tử $ size

Toán tử $ size được sử dụng để tìm tài liệu trong đó mảng có số phần tử bằng giá trị của $ size. Ví dụ:hãy trích xuất tất cả các tài liệu có hai phần tử trong mảng laguages:

db.users.find ({languages: {$size:2}})

Ví dụ, một truy vấn như vậy sẽ tương ứng với tài liệu sau:

{"name": "Tom", "age": 32, languages: ["english", "german"]}

Toán tử $ tồn tại

Toán tử $ being chỉ cho phép trích xuất những tài liệu khi có hoặc không có khóa nhất định. Ví dụ:trả lại tất cả các tài liệu có chứa khóa công ty:

db.users.find ({company: {$exists:true}})

Nếu chúng tôi chỉ định $ tồn tại làm tham số sai, truy vấn sẽ chỉ trả về cho chúng tôi những tài liệu không chứa khóa công ty.

Toán tử $ type

Toán tử $ type chỉ trích xuất những tài liệu trong đó một khóa nhất định có giá trị thuộc một loại nhất định, ví dụ:một chuỗi hoặc một số:

db.users.find ({age: {$type: "string"}})
> db.users.find ({age: {$type: "number"}})

Toán tử $ regex

Toán tử $ regex chỉ định một biểu thức chính quy mà giá trị trường phải tương ứng với . Ví dụ:để tên trường nhất thiết phải có chữ cái “b”:

db.users.find ({name: {$regex: "b"}})

Điều quan trọng cần hiểu là $ regex không chỉ nhận các chuỗi mà là các biểu thức chính quy, ví dụ:name:{$ regex:“om $”} - giá trị của tên phải kết thúc bằng “om”.

MongoDB Hướng dẫn:Toán tử truy vấn mảng ($ all, $ elemMatch, $ size)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cài đặt MongoDB với Homebrew

  2. Định dạng ISODate từ Mongodb

  3. Lệnh đếm MongoDB

  4. Sắp xếp MongoDB

  5. Cách tôi đã viết một ứng dụng đứng đầu bảng xếp hạng trong một tuần với Realm và SwiftUI