将$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 }