날짜 필드 가있는 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})
답변
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()