Computer >> Máy Tính >  >> Lập trình >> MongoDB

Triển khai trường MongoDB $ cond trong đường ống chiếu dựa trên sự hiện diện hay vắng mặt của trường?

Đối với điều này, bạn có thể sử dụng $ cond cùng với $ anyElementTrue. Giá trị NULL (không có trường) sẽ đánh giá thành FALSE. Cùng với đó, một mảng trống cũng trả về FALSE với $ anyElementTrue.

Trước tiên, hãy để chúng tôi tạo một bộ sưu tập với các tài liệu -

> db.presenceDemo.insertOne ({"StudentName":null}); {"nition ":true," insertId ":ObjectId (" 5e06f70c25ddae1f53b621f3 ")}> db.presenceDemo.insertOne ({" StudentName ":" Chris "}); {" Recognition ":true," insertId ":ObjectId (" 5e06f71425ddae1f53b621f4 ")}> db.presenceDemo.insertOne ({" StudentName ":null}); {"nition":true, "insertId":Đối tượng 

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find () -

> db.presenceDemo.find (); 

Điều này sẽ tạo ra kết quả sau -

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

Đây là truy vấn để triển khai trường $ cond dựa trên sự hiện diện hoặc vắng mặt của trường -

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

Điều này sẽ tạo ra kết quả sau -

 {"_id":ObjectId ("5e06f70c25ddae1f53b621f3"), "MyValue":0} {"_id":ObjectId ("5e06f71425ddae1f53b621f4"), "MyValue":1} {"_id":Đối tượng , "MyValue":0} {"_id":ObjectId ("5e06f71e25ddae1f53b621f6"), "MyValue":1}