Để áp dụng một điều kiện chỉ khi field tồn tại (hoặc ngược lại: field không tồn tại HOẶC field tồn tại và thỏa mãn điều kiện), bạn sử dụng toán tử $or kết hợp với $exists.
Tạo dữ liệu mẫu
Lưu ý: Document cuối cùng (Robert) không có trường StudentAge.
> db.applyConditionDemo.insertOne({"StudentName":"Larry","StudentAge":21,"StudentMarks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b78623186894665ae36") }
> db.applyConditionDemo.insertOne({"StudentName":"Sam","StudentAge":23,"StudentMarks":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b87623186894665ae37") }
> db.applyConditionDemo.insertOne({"StudentName":"David","StudentAge":21,"StudentMarks":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80b95623186894665ae38") }
> db.applyConditionDemo.insertOne({"StudentName":"Carol","StudentAge":24,"StudentMarks":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80ba3623186894665ae39") }
> db.applyConditionDemo.insertOne({"StudentName":"Chris","StudentAge":21,"StudentMarks":88});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80bae623186894665ae3a") }
> db.applyConditionDemo.insertOne({"StudentName":"Robert","StudentMarks":98});
{ "acknowledged" : true, "insertedId" : ObjectId("5cb80c3d623186894665ae3b") }
Hiển thị tất cả:
> db.applyConditionDemo.find().pretty();
Truy vấn: StudentAge = 21 HOẶC StudentAge không tồn tại
> db.applyConditionDemo.find({ $or: [ { StudentAge: { $exists:false } }, { StudentAge:21 } ]}).pretty();Kết quả (bao gồm Robert không có StudentAge):
Mô hình chung:
{ $or: [ { field: { $exists: false } }, { field: giáTrịMongMuốn } ] }- Trả về document nếu field không tồn tại HOẶC field tồn tại và bằng giá trị mong muốn.