这可能是一件非常容易的事情,但我是MongoDB的新手,并且无法正确理解这个词。
我从数据库中提取潜在客户,我只希望它在电子邮件字段不为空的情况下提取记录。我已经尝试将语句放入跳过记录,如果它不是null,但是有许多字段不是null,但也没有任何字符。这是我的MongoDB查询:
$records = $dbh->find('email' => array('$ne' => null))->limit(2000);
我也试过了'email' => array('$ne' => ''))
,但这也没有做到。
有一种简单的方法吗?我在MySQL中知道这将是一个简单的where email != ""
,但我仍在学习Mongo的方式:)谢谢!
答案 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);