Có $in trong mongodb không?

Trong bài viết này, chúng ta sẽ xem xét các toán tử truy vấn được sử dụng phổ biến nhất. Chúng tôi sẽ giải thích những gì họ làm, sau đó chia sẻ các ví dụ để bạn có thể thấy cách họ làm việc

(Bài viết này là một phần của Hướng dẫn MongoDB của chúng tôi. Sử dụng menu bên phải để điều hướng. )

Toán tử MongoDB là gì?

MongoDB cung cấp các loại toán tử khác nhau có thể được sử dụng để tương tác với cơ sở dữ liệu. Toán tử là các ký hiệu hoặc từ khóa đặc biệt thông báo cho trình biên dịch hoặc trình thông dịch thực hiện các phép toán hoặc logic

Các toán tử truy vấn nâng cao chức năng của MongoDB bằng cách cho phép các nhà phát triển tạo các truy vấn phức tạp để tương tác với các tập dữ liệu phù hợp với ứng dụng của họ

MongoDB cung cấp các loại toán tử truy vấn sau

  • so sánh
  • Hợp lý
  • Thành phần
  • Sự đánh giá
  • không gian địa lý
  • Mảng
  • Bitwise
  • Bình luận

Các toán tử MongoDB có thể được sử dụng với bất kỳ lệnh MongoDB nào được hỗ trợ

Bây giờ, hãy xem xét các toán tử thường được sử dụng. (Chúng tôi sẽ không chạm vào tất cả, có rất nhiều. ) Chúng tôi sẽ sử dụng tập dữ liệu sau với hàm find() để minh họa chức năng của từng toán tử

  • cơ sở dữ liệu. siêu thị
  • bộ sưu tập. nhân viên, hàng tồn kho, thanh toán, khuyến mãi
use supermarket
db.employees.find()
db.inventory.find()
db.payments.find()
db.promo.find()

tập dữ liệu

Có $in trong mongodb không?

Toán tử so sánh

Các toán tử so sánh MongoDB có thể được sử dụng để so sánh các giá trị trong tài liệu. Bảng sau chứa các toán tử so sánh phổ biến

OperatorDescription$eq Khớp các giá trị bằng với giá trị đã cho. $gtMatches nếu giá trị lớn hơn giá trị đã cho. $ltMatches nếu giá trị nhỏ hơn giá trị đã cho. $gteMatch nếu giá trị lớn hơn hoặc bằng giá trị đã cho. $lteMatches nếu giá trị nhỏ hơn hoặc bằng giá trị đã cho. $inKhớp bất kỳ giá trị nào trong một mảng. $neMatch các giá trị không bằng với giá trị đã cho. $ninMatch không có giá trị nào được chỉ định trong một mảng

Toán tử $eq

Trong ví dụ này, chúng tôi truy xuất tài liệu có giá trị _id chính xác “LS0009100”

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()

Kết quả

Có $in trong mongodb không?

Toán tử $gt và $lt

Trong ví dụ này, chúng tôi truy xuất các tài liệu có `số lượng` lớn hơn 5000

db.inventory.find({"quantity": { $gt: 5000}}).pretty()

Kết quả

Có $in trong mongodb không?

Cùng tìm những tài liệu có ‘số lượng’ nhỏ hơn 5000

db.inventory.find({"quantity": { $lt: 5000}}).pretty()

Kết quả

Có $in trong mongodb không?

Toán tử $gte và $lte

Tìm tài liệu có ‘số lượng’ lớn hơn hoặc bằng 5000

db.inventory.find({"quantity": { $gte: 12000}}).pretty()

Kết quả

Có $in trong mongodb không?

Truy vấn sau đây trả về các tài liệu có số lượng nhỏ hơn hoặc bằng 1000

db.inventory.find({"quantity": { $lte: 1000}}).pretty()

Kết quả

Có $in trong mongodb không?

Toán tử $in và $nin

Truy vấn sau đây trả về các tài liệu trong đó trường giá chứa các giá trị đã cho

db.inventory.find({"price": { $in: [3, 6]}}).pretty()

Kết quả

Có $in trong mongodb không?

Nếu bạn muốn tìm tài liệu mà trường giá không chứa các giá trị đã cho, hãy sử dụng truy vấn sau

db.inventory.find({"price": { $nin: [5.23, 3, 6, 3.59, 4.95]}}).pretty()

Kết quả

Có $in trong mongodb không?

Toán tử $ne

Tìm tài liệu mà giá trị của trường giá không bằng 5. 23 trong bộ sưu tập hàng tồn kho

________số 8

Kết quả

Có $in trong mongodb không?

Toán tử logic

Các toán tử logic MongoDB có thể được sử dụng để lọc dữ liệu dựa trên các điều kiện nhất định. Các toán tử này cung cấp một cách để kết hợp nhiều điều kiện. Mỗi toán tử cân bằng điều kiện đã cho với giá trị đúng hoặc sai

Dưới đây là các toán tử logic MongoDB

OperatorDescription$andJoins hai hoặc nhiều truy vấn với logic AND và trả về các tài liệu phù hợp với tất cả các điều kiện. $orTham gia hai hoặc nhiều truy vấn với một OR logic và trả về các tài liệu khớp với một trong hai truy vấn. $norNgược lại với toán tử OR. Toán tử logic NOR sẽ kết hợp hai hoặc nhiều truy vấn và trả về các tài liệu không khớp với các điều kiện truy vấn đã cho. $notTrả về tài liệu không khớp với biểu thức truy vấn đã cho

toán tử $and

Tìm tài liệu phù hợp với cả hai điều kiện sau

  • job_role tương đương với “Cửa hàng cộng tác”
  • emp_age nằm trong khoảng từ 20 đến 30
db.employees.find({ $and: [{"job_role": "Store Associate"}, {"emp_age": {$gte: 20, $lte: 30}}]}).pretty()

Kết quả

Có $in trong mongodb không?

Toán tử $or và $nor

Tìm tài liệu phù hợp với một trong các điều kiện sau

  • job_role tương đương với “Senior Cashier” hoặc “Store Manager”
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
0

Kết quả

Có $in trong mongodb không?

Tìm tài liệu không phù hợp với một trong các điều kiện sau

  • job_role tương đương với “Senior Cashier” hoặc “Store Manager”
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
1

Kết quả

Có $in trong mongodb không?

toán tử $not

Tìm tài liệu mà chúng không phù hợp với điều kiện nhất định

  • emp_age không lớn hơn hoặc bằng 40
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
2

Kết quả

Có $in trong mongodb không?

Toán tử phần tử

Các toán tử truy vấn phần tử được sử dụng để xác định tài liệu bằng cách sử dụng các trường của tài liệu. Bảng đưa ra dưới đây liệt kê các toán tử phần tử hiện tại

OperatorDescription$existsKhớp các tài liệu có trường được chỉ định. $type Khớp tài liệu theo loại trường đã chỉ định. Các loại trường này được chỉ định các loại BSON và có thể được xác định theo số loại hoặc bí danh

Toán tử $exists

Tìm tài liệu có trường job_role tồn tại và bằng “Cashier”

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
3

Kết quả

Có $in trong mongodb không?

Tìm tài liệu có trường địa chỉ. (Vì tập dữ liệu hiện tại không chứa trường địa chỉ, đầu ra sẽ là null. )

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
4

Kết quả

Có $in trong mongodb không?

Toán tử $type

Truy vấn sau trả về tài liệu nếu trường emp_age là loại kép. Nếu chúng tôi chỉ định một loại dữ liệu khác, sẽ không có tài liệu nào được trả về mặc dù trường tồn tại vì nó không tương ứng với loại trường chính xác

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
5

Kết quả

Có $in trong mongodb không?

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
6

Kết quả

Có $in trong mongodb không?

Toán tử đánh giá

Toán tử đánh giá MongoDB có thể đánh giá cấu trúc dữ liệu tổng thể hoặc trường riêng lẻ trong tài liệu. Chúng tôi chỉ xem xét chức năng cơ bản của các toán tử này vì mỗi toán tử này có thể được coi là một chức năng nâng cao của MongoDB. Dưới đây là danh sách các toán tử đánh giá phổ biến trong MongoDB

OperatorDescription$jsonSchemaXác thực tài liệu theo lược đồ JSON đã cho. $modMatch các tài liệu trong đó giá trị của một trường đã cho bằng với phần còn lại sau khi được chia cho một giá trị đã chỉ định. $regexChọn tài liệu khớp với biểu thức chính quy đã cho. $textThực hiện tìm kiếm văn bản trên trường được chỉ định. Tìm kiếm chỉ có thể được thực hiện nếu trường được lập chỉ mục bằng chỉ mục văn bản. $whereMatches tài liệu đáp ứng một biểu thức JavaScript

Toán tử $jsonSchema

Tìm tài liệu khớp với lược đồ JSON sau đây trong bộ sưu tập quảng cáo

Tập hợp $let được sử dụng để liên kết các biến với một đối tượng kết quả để có kết quả đơn giản hơn. Trong lược đồ JSON, chúng tôi đã chỉ định giá trị tối thiểu cho trường “dấu chấm” là 7, giá trị này sẽ lọc ra bất kỳ tài liệu nào có giá trị nhỏ hơn

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
7____18

Kết quả

Có $in trong mongodb không?

Toán tử $mod

Tìm tài liệu có số dư là 1000 khi chia cho 3000 trong bộ sưu tập hàng tồn kho

Lưu ý rằng tài liệu “Sữa không béo – 1 lít” được bao gồm trong đầu ra vì số lượng là 1000, không thể chia cho 3000 và phần còn lại là 1000

db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()
9

Kết quả

Có $in trong mongodb không?

Toán tử $regex

Tìm tài liệu có chứa từ "Đóng gói" trong trường tên trong bộ sưu tập hàng tồn kho

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
0

Kết quả

Có $in trong mongodb không?

Toán tử $text

Tìm tài liệu bằng cách sử dụng văn bản tìm kiếm “Non-Fat” trong trường tên. Nếu trường chưa được lập chỉ mục, bạn phải tạo chỉ mục văn bản trước khi tìm kiếm

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
1

Kết quả

Có $in trong mongodb không?

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
2

Kết quả

Có $in trong mongodb không?

Toán tử $where

Tìm tài liệu từ bộ sưu tập "thanh toán" trong đó trường _id là một loại chuỗi và bằng hàm băm md5 đã cho được xác định dưới dạng hàm JavaScript

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
3

Kết quả

Có $in trong mongodb không?

Toán tử mảng

Toán tử mảng MongoDB được thiết kế để truy vấn tài liệu bằng mảng. Dưới đây là các toán tử mảng được cung cấp bởi MongoDB

OperatorDescrip$allMatch các mảng chứa tất cả các giá trị đã chỉ định trong điều kiện truy vấn. $sizeKhớp tài liệu nếu kích thước mảng bằng với kích thước đã chỉ định trong truy vấn. $elemMatchMatch Khớp các tài liệu khớp với các điều kiện $elemMatch đã chỉ định trong mỗi phần tử mảng

toán tử $all

Tìm tài liệu trong đó trường mảng danh mục chứa các giá trị “lành mạnh” và “không phải trả tiền”

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
4

Kết quả

Có $in trong mongodb không?

Toán tử $size

Tìm tài liệu trong đó trường mảng danh mục có hai phần tử

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
5

Kết quả

Có $in trong mongodb không?

Toán tử $elemMatch

Tìm tài liệu có ít nhất một phần tử trong mảng “daily_sales” nhỏ hơn 200 và lớn hơn 100

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
6

Kết quả

Có $in trong mongodb không?

Toán tử nhận xét

Toán tử truy vấn nhận xét MongoDB liên kết một nhận xét với bất kỳ biểu thức nào nhận một vị từ truy vấn. Việc thêm nhận xét vào truy vấn cho phép quản trị viên cơ sở dữ liệu theo dõi và giải thích nhật ký MongoDB bằng cách sử dụng nhận xét một cách dễ dàng

Toán tử $comment

Tìm tài liệu có khoảng thời gian bằng 7 trong bộ sưu tập quảng cáo trong khi thêm nhận xét vào thao tác tìm

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
7

Kết quả

Có $in trong mongodb không?

Thêm nhận xét cho phép người dùng dễ dàng xác định các lệnh trong nhật ký MongoDB. Hoạt động trên sẽ được ghi lại như sau

db.inventory.find({"quantity": { $gt: 5000}}).pretty()
8

Kết quả

Có $in trong mongodb không?

Phần kết luận

Trong bài viết này, chúng ta mới chỉ tìm hiểu sơ qua về các toán tử MongoDB. Chúng ta có thể mở rộng hơn nữa chức năng tổng thể của cơ sở dữ liệu bằng phép chiếu và tập hợp

Làm cách nào để sử dụng $set trong MongoDB?

Toán tử $set thay thế giá trị của một trường bằng giá trị đã chỉ định . Biểu thức toán tử $set có dạng như sau. { $set. {

Chúng tôi có thể sử dụng $in trong Elemmatch không?

Điều này sẽ khớp với bất kỳ tài liệu nào có phần tử mảng với cả 313 và 6 hoặc 19. Nó cũng hoạt động với {$in. []} cho cả defindex và _particleEffect, miễn là bạn có ý định so khớp bất kỳ kết hợp nào của hai danh sách . Lưu câu trả lời này.

$first trong MongoDB là gì?

$first chọn tài liệu đầu tiên từ mỗi nhóm đầu ra . _id. nhóm null được bao gồm. Khi trường tích lũy, $quantity trong ví dụ này, bị thiếu, $first trả về giá trị rỗng.

Làm cách nào để sử dụng $EQ trong MongoDB?

Toán tử đẳng thức ($eq ) được sử dụng để so khớp các tài liệu trong đó giá trị của trường bằng với giá trị đã chỉ định . Nói cách khác, toán tử $eq được sử dụng để xác định điều kiện bình đẳng. Điểm quan trọng. Nếu giá trị đã cho là một tài liệu, thì thứ tự của các trường trong tài liệu là quan trọng.