如何找到不等于多个id的mongodb数据?

时间:2018-04-27 13:26:11

标签: php nosql

我有一个场景:

我在数组中有一些ID:[5adcbe766803fa6b048b4599,5adcbe766803fa6b048b4567]

$ids = [5adcbe766803fa6b048b4599, 5adcbe766803fa6b048b4567] ;

当我试图找到:

db.users.find(array('_id': array('$nin' : '$ids')));

我得到一些不正确的结果。

但如果我使用其他字段,如:

db.users.find(array('name': array('$nin' : 'asghar')));

现在结果是正确的。

1 个答案:

答案 0 :(得分:1)

你不能以这种方式传递id。

db.users.find(array('_id': array('$nin' : '$ids')));

这是解决方案:

$idsAll = array();
foreach ($ids as $k=>$v) {
                $idsAll[] =  new MongoId($v);
            }
db.users.find(array('_id': array('$nin' : $idsAll)));