MongoDB 查询同时排除包含 FALSE 的字段


为此,使用 $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 }

更新于: 2019 年 7 月 30 日

324 次浏览

开启你的 职业生涯

完成课程即可获得认证

开始学习
广告
© . All rights reserved.