2016-10-23 8 views
1

私はmongoのコレクションを持っています。私はPHPで指定された文字で始まるすべてのドキュメントを取得したいと思います。私のコード:PHPでmongo regexのクエリを並べ替える

$letter = "c"; 
$client = new MongoDB\Client(); 
$pme = $client->selectCollection("belgium", "pme");  
$regex = new MongoDB\BSON\Regex ("^$letter", "i"); 
$query = array('name' => $regex); // 1 
$query = array('name' => $regex, array('sort' => array('OrderBy' => 1))); // 2 
$query = new MongoDB\Driver\Query(array('name' => $regex), array('sort' => array('OrderBy' => 1))); // 3 
$cursor = $pme->find($query); 

私はすべてのドキュメントがcから始まっていますが、注文されていません。クエリ2を使用すると、何も得られません。最後に、クエリ3を使用すると、「c」で始まるドキュメントだけでなく、ほとんどすべてのドキュメントが取得されます。私はここで間違っていますか? mongo方法sort

答えて

1

findによって得られたcursorに適用されるべきである:

$letter = "c"; 
$client = new MongoDB\Client(); 
$pme = $client->selectCollection("belgium", "pme");  
$regex = new MongoDB\BSON\Regex ("^$letter", "i"); 
$query = array('name' => $regex); 
// sort by field `name` happens here 
$options = array("sort" => array("name" => 1),); 
$cursor = $pme->find($query, $options); 
+0

おかげではなく、カーソルのソート方法はもはや存在しません。 –

+0

私は答えを更新しました。詳細については、https://github.com/mongodb/mongo-php-driver/issues/214をご覧ください。 –

+0

ありがとうマイク、私はまさにこのソリューションを発表しようとしていました。私は今働きます。 –

関連する問題