Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

เพิ่มฟิลด์ boolean true ให้ออบเจกต์ที่คืนค่า เมื่อค่าที่ระบุอยู่ในอาร์เรย์ สำหรับ NULL หรือค่าอื่นตั้งเป็น false


สำหรับเรื่องนี้ ให้ใช้ $ifNull มันจะประเมินนิพจน์และคืนค่าของนิพจน์ถ้านิพจน์ประเมินได้ค่าที่ไม่ใช่ null มาสร้างคอลเลกชันพร้อมเอกสารกันก่อน

> db.demo542.insertOne({"ListOfName":["Chris","David"]});{    "acknowledged" : true,    "insertedId" : ObjectId("5e8cabc6ef4dcbee04fbbc17") } > db.demo542.insertOne({"ListOfName":null});{    "acknowledged" : true,    "insertedId" : ObjectId("5e8cabc8ef4dcbee04fbbc18") } > db.demo542.insertOne({"ListOfName":["David"]});{    "acknowledged" : true,    "insertedId" : ObjectId("5e8cabd3ef4dcbee04fbbc19") } > db.demo542.insertOne({"Name":"John"});{    "acknowledged" : true,    "insertedId" : ObjectId("5e8cabdaef4dcbee04fbbc1a") }

แสดงเอกสารทั้งหมดจากคอลเลกชันด้วยเมธอด find()

> db.demo542.find();

จะได้ผลลัพธ์ดังนี้

{ "_id" : ObjectId("5e8cabc6ef4dcbee04fbbc17"), "ListOfName" : [ "Chris", "David" ] } { "_id" : ObjectId("5e8cabc8ef4dcbee04fbbc18"), "ListOfName" : null } { "_id" : ObjectId("5e8cabd3ef4dcbee04fbbc19"), "ListOfName" : [ "David" ] } { "_id" : ObjectId("5e8cabdaef4dcbee04fbbc1a"), "Name" : "John" }

คำสั่งสำหรับตรวจสอบค่าเฉพาะ

> var id = "David"; > db.demo542.aggregate([ ...    { ...         "$project": { ...          "matched": { ...             "$eq": [ ...                { ...                   "$size": { ...                      "$ifNull": [ ...                         { "$setIntersection": [ "$ListOfName", [id] ] }, ...                         [] ...                      ] ...                   } ...                }, ...                1 ...          ] ...          } ...       } ...    } ... ])

จะได้ผลลัพธ์ดังนี้

{ "_id" : ObjectId("5e8cabc6ef4dcbee04fbbc17"), "matched" : true } { "_id" : ObjectId("5e8cabc8ef4dcbee04fbbc18"), "matched" : false } { "_id" : ObjectId("5e8cabd3ef4dcbee04fbbc19"), "matched" : true } { "_id" : ObjectId("5e8cabdaef4dcbee04fbbc1a"), "matched" : false }