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 Show
(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
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ử
use supermarket db.employees.find() db.inventory.find() db.payments.find() db.promo.find() tập dữ liệu Toán tử so sánhCá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ảngToán tử $eqTrong 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ả Toán tử $gt và $ltTrong 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ù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ả Toán tử $gte và $lteTì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ả 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ả Toán tử $in và $ninTruy 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ả 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ả Toán tử $neTì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ố 8Kết quả Toán tử logicCá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 đã chotoán tử $andTìm tài liệu phù hợp với cả hai điều kiện sau
db.employees.find({ $and: [{"job_role": "Store Associate"}, {"emp_age": {$gte: 20, $lte: 30}}]}).pretty() Kết quả Toán tử $or và $norTìm tài liệu phù hợp với một trong các điều kiện sau
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()0 Kết quả Tìm tài liệu không phù hợp với một trong các điều kiện sau
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()1 Kết quả toán tử $notTìm tài liệu mà chúng không phù hợp với điều kiện nhất định
db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()2 Kết quả 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í danhToán tử $existsTì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ả 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ả Toán tử $typeTruy 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ả db.inventory.find({"_id": { $eq: "LS0009100"}}).pretty()6 Kết quả 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 JavaScriptToán tử $jsonSchemaTì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ả Toán tử $modTì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ả Toán tử $regexTì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ả Toán tử $textTì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ả db.inventory.find({"quantity": { $gt: 5000}}).pretty()2 Kết quả Toán tử $whereTì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ả Toán tử mảngToá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ảngtoán tử $allTì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ả Toán tử $sizeTì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ả Toán tử $elemMatchTì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ả Toán tử nhận xétToá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ử $commentTì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ả 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ả Phần kết luậnTrong 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. |