Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Triển khai $exists và $ne trong MongoDB

Toán tử $exists kiểm tra sự tồn tại của trường trong tài liệu, trong khi $ne (not equal) kiểm tra giá trị khác với giá trị cho trước. Kết hợp chúng để tìm tài liệu có trường tồn tại VÀ giá trị khác rỗng/null.

Tạo dữ liệu mẫu

> db.existsDemo.insertOne({"Name":"Chris","Age":21});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c3916d78f205348bc650") }
> db.existsDemo.insertOne({"Name":"","Age":null});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c39a6d78f205348bc651") }
> db.existsDemo.insertOne({"Name":null,"Age":24});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c3a66d78f205348bc652") }
> db.existsDemo.insertOne({"Age":23});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd7c3c36d78f205348bc653") }

Xem dữ liệu

> db.existsDemo.find().pretty();

Truy vấn: Name tồn tại VÀ khác chuỗi rỗng


Kết quả


Giải thích từng tài liệu

_idName$exists: true$ne: ""Kết quả
...650"Chris"✅✅✅ Khớp
...651""✅❌❌
...652null✅✅ (null ≠ "")✅ Khớp
...653(missing)❌-❌

Phân biệt $exists, $ne, $type

Toán tửKiểm traKhớp nullKhớp missingKhớp ""
{$exists: true}Trường tồn tại✅❌✅
{$ne: null}Khác null❌✅ (missing ≠ null)✅
{$ne: ""}Khác chuỗi rỗng✅✅❌
{$type: "null"}BSON type null✅❌❌
{$type: "string"}BSON type string❌❌✅

Các pattern thường dùng

1. Trường tồn tại, không null, không rỗng


2. Trường tồn tại VÀ có giá trị (not null, not empty string, not empty array)


3. Sử dụng $nin cho nhiều giá trị loại trừ


Lưu ý

  • $exists: true + $ne: "" thường dùng cho validation dữ liệu
  • Null ≠ undefined ≠ missing ≠ empty string trong MongoDB
  • Tạo index trên trường thường query: db.existsDemo.createIndex({Name: 1})