Computer >> 컴퓨터 >  >> 프로그램 작성 >> MongoDB

필드의 유무에 따라 프로젝션 파이프라인에서 MongoDB $cond 필드를 구현하시겠습니까?

<시간/>

이를 위해 $anyElementTrue와 함께 $cond를 사용할 수 있습니다. NULL 값(필드가 없음)은 FALSE로 평가됩니다. 이를 통해 빈 배열은 $ anyElementTrue와 함께 FALSE도 반환합니다.

먼저 문서로 컬렉션을 생성해 보겠습니다. −

> db.presenceDemo.insertOne({"StudentName":null});{ "승인됨" :true, "insertedId" :ObjectId("5e06f70c25ddae1f53b621f3")}> db.presenceDemo.insertName("{"StudentName" 크리스"});{ "승인됨" :true, "insertedId" :ObjectId("5e06f71425ddae1f53b621f4")}> db.presenceDemo.insertOne({"StudentName":null});{ "승인됨" :true, "insertedId ObjectId("5e06f71825ddae1f53b621f5")}> db.presenceDemo.insertOne({"StudentName":"David"});{ "승인됨":true, "insertedId":ObjectId("5e06f71e25ddae21f") 

다음은 find() 메서드를 사용하여 컬렉션의 모든 문서를 표시하는 쿼리입니다. -

> db.presenceDemo.find();

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e06f70c25ddae1f53b621f3"), "StudentName" :null }{ "_id" :ObjectId("5e06f71425ddae1f53b621f4"), "StudentName":"(Chris51f53b621f4"), "StudentName":"(크리스)"e2 "), "학생 이름":null }{ "_id":ObjectId("5e06f71e25ddae1f53b621f6"), "학생 이름":"데이비드" }

다음은 필드의 유무에 따라 $cond 필드를 구현하는 쿼리입니다 -

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

이것은 다음과 같은 출력을 생성합니다 -

{ "_id" :ObjectId("5e06f70c25ddae1f53b621f3"), "MyValue" :0 }{ "_id" :ObjectId("5e06f71425ddae1f53b621f4"), "MyValue" :1 }{ 0d71f53b621f4"), "MyValue" :1 }{ 0d721f1f , "내 가치":0 }{ "_id":ObjectId("5e06f71e25ddae1f53b621f6"), "내 가치":1 }