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

Truy vấn MongoDB loại trừ document khi cả hai trường đều FALSE

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 }