I was checking logic for querying on non-values and noticed when using the mongo
shell, it differentiates between undefined
and null
v
In case you wonder, why MongoDB casts undefined
to null
instead of just ignoring such properties - ignoreUndefined
flag could solve this behaviour.
https://mongodb.github.io/node-mongodb-native/2.1/reference/connecting/connection-settings/
You should be using $exists to check for values that don't have the field.
If you want to return a document where a field exists AND is not null, use { a : {$ne : null}}
Undefined and null values are different, but the shell shows them both as null - https://jira.mongodb.org/browse/SERVER-6102