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.