Sử dụng $expr kết hợp $or để lọc document không có cả hai trường boolean đều false.
Tạo collection với document (trường isLiveInUS và isMarried):
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": true, "isMarried": false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd86abf3115999ed5120d") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": true, "isMarried": true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd876bf3115999ed5120e") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": false, "isMarried": false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd87dbf3115999ed5120f") }
Hiển thị tất cả document:
> db.orTwoFieldsDemo.find();
Kết quả:
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false }
{ "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true }
{ "_id" : ObjectId("5cdfd87dbf3115999ed5120f"), "isLiveInUS" : false, "isMarried" : false }
Truy vấn chỉ giữ document có ÍT NHẤT MỘT trong hai trường là true (loại trừ cả hai false):
> db.orTwoFieldsDemo.find({ $expr: { $or: [ "$isLiveInUS", "$isMarried" ] } });
Kết quả (loại bỏ document thứ 3):
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false }
{ "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true }