将$or运算符与$expr运算符一起使用。让我们首先创建一个包含文档的集合,其中一个字段是isMarried,值为true,值为false-
> 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") }
以下是在find()
方法的帮助下显示集合中所有文档的查询-
> db.orTwoFieldsDemo.find();
这将产生以下输出-
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false } { "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true } { "_id" : ObjectId("5cdfd87dbf3115999ed5120f"), "isLiveInUS" : false, "isMarried" : false }
以下是查询以避免在两个字段中同时使用FALSE值,并且仅显示具有TRUE的字段,或者仅显示具有TRUE的字段,或者仅显示具有另一个FALSE的字段,反之亦然-
> db.orTwoFieldsDemo.find({ $expr: { $or: [ "$isLiveInUS", "$isMarried" ] } });
这将产生以下输出-
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false } { "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true }