1

私はウェブサイトへの訪問者に関する情報を集めたコレクションを持っています。各訪問者は、営業担当者が彼らを「ロック」したかどうかなど、彼らに関するさまざまな情報を持っています。現在、私は次のコードを持っています:

$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'].'*');       
}

基本的に、2つのforeachステートメントを使用して情報をエコーアウトします。どういうわけか、代わりにクエリを使用して基本的に言うことはできますか

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

4

2 に答える 2

1

さて、MongoDB は 1.5.3 バージョンから、クエリで OR 条件をサポートしています。

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

... したがって、次のような方法で実装する必要があります。

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

使用しているドライバーがこのタイプのクエリをサポートしているかどうかは疑問です。この特定のタイプを使用する際にいくつかの問題に直面しましたが、それは 1 年前のことです。物事は最高のものに変わるかもしれないと思います。)

更新: 少なくともここのコメントに同様のクエリがあるため、DID が変更されたことが最善であると思います。)

于 2012-06-20T22:55:11.683 に答える
0

raina77ow の回答で十分ですが、次のページは、またはステートメントやより大きいステートメントなどで何が必要かを判断するのに常に役立ちます。

MongoDB オペレーター

PHP 用に配列形式に変更する必要がありますが、構文は似ており、参考になります。

于 2013-05-29T12:09:02.690 に答える