在MongoDB中查找字段,其中字段不为空(在PHP中)
这可能是一件很容易做到的事情,但我对MongoDB还很陌生,很难正确使用这个词 我从数据库中提取线索,我只希望它提取电子邮件字段不为空的记录。我已经尝试过在语句中输入,如果记录不为null,则跳过它,但是有许多字段不是null,但也没有任何字符。以下是我的MongoDB查询:在MongoDB中查找字段,其中字段不为空(在PHP中),php,mongodb,Php,Mongodb,这可能是一件很容易做到的事情,但我对MongoDB还很陌生,很难正确使用这个词 我从数据库中提取线索,我只希望它提取电子邮件字段不为空的记录。我已经尝试过在语句中输入,如果记录不为null,则跳过它,但是有许多字段不是null,但也没有任何字符。以下是我的MongoDB查询: $records=$dbh->find('email'=>array('$ne'=>null))->limit(2000) 我还尝试了'email'=>array('$ne'=>''),但这也没有奏效 有没有一个简单的方法
$records=$dbh->find('email'=>array('$ne'=>null))->limit(2000)代码>
我还尝试了'email'=>array('$ne'=>'')
,但这也没有奏效
有没有一个简单的方法可以做到这一点?我知道在MySQL中,它将是一个简单的where-email!=“
但我仍在学习Mongo:)谢谢 尝试此操作,您将不正确地封闭到数组中
$records = $dbh->find(array("email" => array('$ne' => null)))->limit(2000);
好吧,我刚刚想出了一个不错的办法,我会把它贴在任何像我这样有同样问题的“noob”上:)
我在数组中使用了“$nin”,它解决了这个问题。现在我的问题是:
$records=$dbh->find(数组(“email”=>array('$nin'=>array('','',null))->limit(2000)代码>在3个小时的失败后,我以一种巧妙的方式做到了这一点:
查找('field'=>array('$regex'=>'.*))您也可以这样做
$records = $dbh->find(array('$where' => 'this.email && this.email.length'))->limit(2000);
隐马尔可夫模型。。。这是可行的,它实际上返回了更多的电子邮件记录,但仍然有一些空字段(可能是其中只有一个空格的字段?)。不过,感谢您对阵列的更正,很高兴知道这一点。
$records = $dbh->find(array('$where' => 'this.email && this.email.length'))->limit(2000);