Để truy xuất bản ghi với $or dựa trên sự tồn tại, kết hợp $or với $exists. Tạo collection mẫu:
> db.demo185.insertOne({_id:101,details:{Name:"Chris",Score:78,Subjects:{"Name":"MySQL"}}});
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo185.insertOne({_id:102,details:{Name:"Bob",Score:78}});
{ "acknowledged" : true, "insertedId" : 102 }
> db.demo185.insertOne({_id:103,details:{Name:"David",Score:78,Subjects:{"Name":"MongoDB"}}});
{ "acknowledged" : true, "insertedId" : 103 }
Hiển thị tất cả tài liệu:
> db.demo185.find();
Kết quả:
Truy vấn sử dụng toán tử $or để tìm tài liệu có trường Subjects.Name tồn tại:
> db.demo185.find({ "$or": [ { "details.Subjects.Name": { "$exists": true } }, { "details.Subjects.Name": { "$exists": true } } ] })Kết quả - chỉ trả về tài liệu có trường Subjects.Name:
Giải thích: Toán tử
$exists: truekiểm tra sự tồn tại của trường. Lưu ý: ví dụ này lặp lại cùng điều kiện hai lần trong $or, trong thực tế bạn sẽ dùng các điều kiện khác nhau.