5

这可能是一件很容易做到的事情,但我对 MongoDB 还是很陌生,并且无法正确使用这个词。

我正在从数据库中提取线索,我只希望它提取电子邮件字段不为空的记录。如果记录不为空,我尝试放入语句以跳过记录,但是有许多字段不为空,但其中也没有任何字符。这是我的 MongoDB 查询:

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

我也尝试过'email' => array('$ne' => '')),但这也没有奏效。

有没有一种简单的方法可以做到这一点?我知道在 MySQL 中这很简单where email != "",但我仍在学习 Mongo 的方法:) 谢谢!

4

5 回答 5

4

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

 $records =      $dbh->find(array("email" => array('$ne' => null)))->limit(2000);
于 2013-04-23T02:47:12.890 回答
2

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

我将 '$nin' 与数组一起使用,它解决了问题。这是我现在的查询:

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

于 2013-04-23T02:55:16.283 回答
1

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

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

于 2013-05-27T21:47:53.927 回答
0

你也可以这样做

$records = $dbh->find(array('$where' => 'this.email && this.email.length'))->limit(2000);
于 2014-06-28T06:41:33.227 回答
0
$records = $dbh->find('$or'=>array(
    array('email'=>array('$exists' => false)),
    array('email'=>array('$ne' => null)),
    array('email'=>array('$ne' => ''))
));
于 2014-02-14T18:16:37.523 回答