在Mongo / PHP中使用IF语句

时间:2012-06-20 22:45:40

标签: php parsing mongodb sorting

我有一个关于网站访问者信息的集合,每个访问者都有各种相关信息,包括销售人员是否“锁定”了这些信息。目前我有以下代码:

$db = $conn->Surreal;
$collection = $db->visitors;
$criteria = array(
    'locked_by' => $_REQUEST['ownerkey'],
);
$criteriat = array(
    'locked_by' => null,
);
$cursor = $collection->find($criteria);
$cursort = $collection->find($criteriat);
//echo $doc->count() . ' document(s) found. <br/>';
foreach ($cursor as $doc) {
    //List all  
    if($doc['locked_by'] ==null) $doc['locked_by'] = " ";
    $pieces = explode("&&", $doc['location']);
    echo('Surreal - '.$doc['name'].'//'.$doc['uuid'].'//'.$doc['uuid'].'//'.$doc['locked_by'].'//'.$doc['location'].'*');       
}
foreach ($cursort as $doc) {
    //List all  
    if($doc['locked_by'] ==null) $doc['locked_by'] = " ";
    $pieces = explode("&&", $doc['location']);
    echo('Surreal - '.$doc['name'].'//'.$doc['uuid'].'//'.$doc['uuid'].'//'.$doc['locked_by'].'//'.$doc['location'].'*');       
}

基本上使用两个foreach语句回显信息。我可以以某种方式使用查询来基本说明

if(locked_by == "RANDOM" || locked_by == null) 

2 个答案:

答案 0 :(得分:1)

嗯,MongoDB支持查询中的OR条件,从1.5.3版本开始:

db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )

......所以它应该通过以下方式实现:

$criteria = array(
    '$or' => array(array('locked_by' => 'RANDOM'), array('locked_by' => null))
);

您使用的驱动程序是否支持此类查询的问题。我使用这种特殊类型遇到了一些困难,但那是一年前的事了;我想事情可能会变得最好。 )

更新:至少有一个类似的查询here in comments,所以我猜DID的变化是最好的。 )

答案 1 :(得分:0)

raina77ow的答案应该足够了,但我总是发现以下页面对于确定所需要的内容或语句以及大于等等是有用的。

MongoDB Operators

您需要将其更改为数组形式以用于PHP,但语法类似且是一个很好的参考。