MongoDB: ¿Cómo buscar registros donde el campo es nulo o no está establecido?
Tengo un documento Email
que tiene un campo de fecha sent_at
:
{
'sent_at': Date( 1336776254000 )
}
Si este Email
no ha sido enviado, el campo sent_at
es nulo o inexistente.
Necesito obtener el recuento de todos los enviados/no enviados Emails
. Estoy atascado en tratar de averiguar la forma correcta de consultar esta información. Creo que esta es la manera correcta de obtener el número de enviados:
db.emails.count({sent_at: {$ne: null}})
Pero ¿cómo debo obtener el recuento de los que no son enviados?
4 answers
Si el campo sent_at no está allí cuando no está establecido entonces:
db.emails.count({sent_at: {$exists: false}})
Si está allí y nulo, o no está en absoluto:
db.emails.count({sent_at: null})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 00:31:55
Si solo desea contar los documentos con sent_at
definido con un valor de null
(no cuente los documentos con sent_at
no establecido):
db.emails.count({sent_at: { $type: 10 }})
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-17 03:46:43
Uso:
db.emails.count({sent_at: null})
Que cuenta todos los correos cuya propiedad sent_at es null o no está establecida. La consulta anterior es la misma que la siguiente.
db.emails.count($or: [
{sent_at: {$exists: false}},
{sent_at: null}
])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-06 07:38:57
Parece que puedes hacer una sola línea:
{ "sent_at": null }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-07 11:04:03