如何在 MongoDB 中使用或運算子來根據存在性提取記錄?


若要根據存在性提取使用 $or 運算子的記錄,請將 $or 與 $exists 搭配使用。讓我們建立一個包含文件的集合 −

>db.demo185.insertOne({_id:101,details:{Name:"Chris",Score:78,Subjects:{"Name":"MySQL"}}});
{ "acknowledged" : true, "insertedId" : 101 }
> db.demo185.insertOne({_id:102,details:{Name:"Bob",Score:78}});
{ "acknowledged" : true, "insertedId" : 102 }
>db.demo185.insertOne({_id:103,details:{Name:"David",Score:78,Subjects:{"Name":"MongoDB"}}});
{ "acknowledged" : true, "insertedId" : 103 }

使用 find() 方法顯示集合中的所有文件 −

> db.demo185.find();

這將產生以下輸出 −

{ "_id" : 101, "details" : { "Name" : "Chris", "Score" : 78, "Subjects" : { "Name" : "MySQL" } } }
{ "_id" : 102, "details" : { "Name" : "Bob", "Score" : 78 } }
{ "_id" : 103, "details" : { "Name" : "David", "Score" : 78, "Subjects" : { "Name" : "MongoDB" } } }

以下是 MongoDB 中使用 or 運算子的查詢 −

> db.demo185.find({
...   "$or": [
...      { "details.Subjects.Name": { "$exists": true } },
...      { "details.Subjects.Name": { "$exists": true } }
...   ]
... })

這將產生以下輸出 −

{ "_id" : 101, "details" : { "Name" : "Chris", "Score" : 78, "Subjects" : { "Name" : "MySQL" } } }
{ "_id" : 103, "details" : { "Name" : "David", "Score" : 78, "Subjects" : { "Name" : "MongoDB" } } }

更新日期: 2020 年 3 月 27 日

73 次瀏覽

開啟您的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.