在MongoDB中查找字段不为空的字段(在PHP中)

时间:2013-04-23 02:44:00

标签: php mongodb

这可能是一件非常容易的事情,但我是MongoDB的新手,并且无法正确理解这个词。

我从数据库中提取潜在客户,我只希望它在电子邮件字段不为空的情况下提取记录。我已经尝试将语句放入跳过记录,如果它不是null,但是有许多字段不是null,但也没有任何字符。这是我的MongoDB查询:

$records = $dbh->find('email' => array('$ne' => null))->limit(2000);

我也试过了'email' => array('$ne' => '')),但这也没有做到。

有一种简单的方法吗?我在MySQL中知道这将是一个简单的where email != "",但我仍在学习Mongo的方式:)谢谢!

5 个答案:

答案 0 :(得分:4)

试试这个,你正在不正确地包围数组

 $records =      $dbh->find(array("email" => array('$ne' => null)))->limit(2000);

答案 1 :(得分:2)

好的,我只是想出了一个不错的方式,并将发布给任何其他“noob”,就像我有同样的问题:)

我在数组中使用'$ nin'并修复了问题。这是我现在的查询:

$records = $dbh->find(array("email" => array('$nin' => array(' ','',null))))->limit(2000);

答案 2 :(得分:1)

经过3个小时的失败后,我设法以一种棘手的方式做到了:

find('field'=> array('$ regex'=>'。*'))

答案 3 :(得分:0)

$records = $dbh->find('$or'=>array(
    array('email'=>array('$exists' => false)),
    array('email'=>array('$ne' => null)),
    array('email'=>array('$ne' => ''))
));

答案 4 :(得分:0)

你也可以这样做

$records = $dbh->find(array('$where' => 'this.email && this.email.length'))->limit(2000);