[mongodb] MongoDB : 필드가 null이거나 설정되지 않은 레코드를 쿼리하는 방법은 무엇입니까?

날짜 필드 가있는 Email문서가 있습니다 sent_at.

{
  'sent_at': Date( 1336776254000 )
}

이이 경우 Email전송되지는 sent_at필드 중 하나를 널 (null), 또는 존재하지 않는 것입니다.

보낸 / 보내지 않은 모든 수를 가져와야 Emails합니다. 이 정보를 쿼리하는 올바른 방법을 찾으려고 노력하고 있습니다. 나는 이것이 보낸 수를 얻는 올바른 방법이라고 생각합니다.

db.emails.count({sent_at: {$ne: null}})

하지만 전송되지 않은 항목의 수는 어떻게 구해야합니까?



답변

sent_at 필드가 설정되지 않았는데 거기에 없으면 :

db.emails.count({sent_at: {$exists: false}})

거기에 null이 있거나 전혀없는 경우 :

db.emails.count({sent_at: null})

쿼리 및 null은 여기를 참조하십시오.


답변

sent_at값 으로 정의 된 문서 만 계산하려는 경우 null( sent_at설정되지 않은 문서는 계산하지 않음 ) :

db.emails.count({sent_at: { $type: 10 }})


답변

사용하다:

db.emails.count({sent_at: null})

sent_at 속성이 null이거나 설정되지 않은 모든 이메일을 계산합니다. 위 쿼리는 아래와 같습니다.

db.emails.count($or: [
  {sent_at: {$exists: false}},
  {sent_at: null}
])


답변

한 줄만 할 수 있습니다.

{ "sent_at": null }


답변

다음을 시도해 볼 수도 있습니다.

db.emails.find($and:[{sent_at:{$exists:true},'sent_at':null}]).count()


답변