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

ใช้ฟิลด์ MongoDB $cond ในไปป์ไลน์การฉายภาพตามการมีหรือไม่มีฟิลด์หรือไม่


สำหรับสิ่งนี้ คุณสามารถใช้ $cond ร่วมกับ $anyElementTrue ค่า NULL (ไม่มีฟิลด์) จะประเมินเป็น FALSE ด้วยเหตุนี้ อาร์เรย์ว่างจึงส่งกลับค่า FALSE ด้วย $ anyElementTrue

ให้เราสร้างคอลเลกชันที่มีเอกสารก่อน -

> db.presenceDemo.insertOne({"StudentName":null});{ "acknowledged" :true, "insertedId" :ObjectId("5e06f70c25dda1f53b621f3")}> db.presenceDemo.insertOne({"StudentName":" Chris"});{ "รับทราบ" :จริง "insertedId" :ObjectId("5e06f71425ddae1f53b621f4")}> db.presenceDemo.insertOne({"StudentName":null});{ "acknowledged" :จริง "insertedId" :ObjectId("5e06f71825ddae1f53b621f5")}> db.presenceDemo.insertOne({"StudentName":"David"});{ "รับทราบ" :จริง "insertedId" :ObjectId("5e06f71e25ddae1f53b621>f6")}
 ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงเอกสารทั้งหมดจากคอลเลกชันโดยใช้วิธี find() -

> db.presenceDemo.find();

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" :ObjectId("5e06f70c25ddae1f53b621f3"), "StudentName" :null }{ "_id" :ObjectId("5e06f71425ddae1f53b621f4"), "StudentName" :"Chris" }{ "_id18":53b "), "StudentName" :null }{ "_id" :ObjectId("5e06f71e25ddae1f53b621f6"), "StudentName" :"David" }

นี่คือแบบสอบถามที่จะใช้ฟิลด์ $cond ตามการมีอยู่หรือไม่มีของฟิลด์ -

> db.presenceDemo.aggregate([... { "$project":{... "MyValue":{... "$cond":[... { "$anyElementTrue":[ [ " $StudentName" ] ] },... 1,... 0... ]... }... }}... ]);

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

{ "_id" :ObjectId("5e06f70c25ddae1f53b621f3"), "MyValue" :0 }{ "_id" :ObjectId("5e06f71425ddae1f53b621f4"), "MyValue" :1 }{ "_id" 18" :2553b62faf5" , "MyValue" :0 }{ "_id" :ObjectId("5e06f71e25ddae1f53b621f6"), "MyValue" :1 }