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

Truy vấn document thiếu trường trong MongoDB với $exists

Toán tử $exists kiểm tra sự tồn tại của trường (field) trong document, bất kể giá trị.

Dữ liệu mẫu (document 2 thiếu Age)

> db.demo234.insertOne({"FirstName":"Chris","LastName":"Brown","Age":24});
> db.demo234.insertOne({"FirstName":"David","LastName":"Miller"});
> db.demo234.insertOne({"FirstName":"John","LastName":"Smith","Age":34});

Truy vấn document KHÔNG có trường Age

> var iterator = db.demo234.find({"Age":{$exists:false}},{"_id":0});
> iterator.forEach(function(d) { printjson(d); })

Kết quả

{ "FirstName" : "David", "LastName" : "Miller" }

Các trường hợp $exists:

  • {field: {$exists: true}}: Trường tồn tại (kể cả giá trị null)
  • {field: {$exists: false}}: Trường không tồn tại
  • Kết hợp: {field: {$exists: true, $ne: null}} → tồn tại VÀ khác null

Lưu ý: {field: null} khớp CẢ trường không tồn tại VÀ trường tồn tại giá trị null. Dùng $exists để phân biệt.

Cập nhật thêm trường cho document thiếu:

db.demo234.updateMany({Age: {$exists: false}}, {$set: {Age: 0}});