I have a scenario like :
I have some ids in array like : [5adcbe766803fa6b048b4599, 5adcbe766803fa6b048b4567]
$ids = [5adcbe766803fa6b048b4599, 5adcbe766803fa6b048b4567] ;
when I try to find with :
db.users.find(array('_id': array('$nin' : '$ids')));
I get some results which are not correct.
but if I use other fields like:
db.users.find(array('name': array('$nin' : 'asghar')));
Now results are correct.
You can not pass ids in this way.
db.users.find(array('_id': array('$nin' : '$ids')));
Here is solution:
$idsAll = array();
foreach ($ids as $k=>$v) {
$idsAll[] = new MongoId($v);
}
db.users.find(array('_id': array('$nin' : $idsAll)));