복붙노트

[MONGODB] MongoDB를 : 필드가 null 여부를 설정합니다 어디에 어떻게 레코드를 조회하려면?

MONGODB

MongoDB를 : 필드가 null 여부를 설정합니다 어디에 어떻게 레코드를 조회하려면?

나는 sent_at 날짜 필드가 이메일 문서가 :

{
  'sent_at': Date( 1336776254000 )
}

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

나는 모든 보냈습니다 / 보내지 않은 이메일의 수를 얻을 필요가있다. 나는이 정보를 쿼리에 올바른 방법을 알아 내려고 노력에 붙어있어. 나는 이것이 보냈습니다 수를 얻을 수있는 올바른 방법이라고 생각 :

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

그러나 어떻게 보내지지하는 사람들의 수를 얻어야한다?

해결법

  1. ==============================

    1.sent_at이 필드를 잘 작성하지가 있으면 그 다음으로 설정하지 않을 경우 :

    sent_at이 필드를 잘 작성하지가 있으면 그 다음으로 설정하지 않을 경우 :

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

    그 거기 널 (null), 또는 거기에 모두 경우 :

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

    쿼리 및 널 여기를 참조하십시오

  2. ==============================

    2.당신은 단지 null 값으로 정의 sent_at와 문서를 계산하려면 (sent_at 설정되지와 문서를 포함되지 않습니다)

    당신은 단지 null 값으로 정의 sent_at와 문서를 계산하려면 (sent_at 설정되지와 문서를 포함되지 않습니다)

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

    3.용도:

    용도:

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

    어떤 카운트 그 sent_at 재산 null의 경우, 또는 설정되어 있지 않은 모든 이메일을. 위의 쿼리는 다음과 동일합니다.

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

    4.당신은 단지 하나의 선을 할 수있는 것 같습니다 :

    당신은 단지 하나의 선을 할 수있는 것 같습니다 :

    { "sent_at": null }
    
  5. ==============================

    5.당신이 시도 할 수 있습니다 :

    당신이 시도 할 수 있습니다 :

    db.emails.find($and:[{sent_at:{$exists:true},'sent_at':null}]).count()
    
  6. from https://stackoverflow.com/questions/10591543/mongodb-how-to-query-for-records-where-field-is-null-or-not-set by cc-by-sa and MIT license