As seen below when a field is missing from the document, a null value in the array returns true for both $in and $nin.
If a missing value is equivalent to null, then $in is performing as expected and $nin should be returning false.
> db.test.insert({})
> db.test.find()
> db.test.find({"test": {$in: [null]}})
{ "_id" : ObjectId("4df8062a2c1a2033b886d0b5") }> db.test.find({"test": {$nin: [null]}})
{ "_id" : ObjectId("4df8062a2c1a2033b886d0b5") }