2016-10-05 16 views
0

PHPの新しいRegexライブラリを使用している私のAPI呼び出しで入力パラメータを一致させようとしていますが、これまで動作していません。私はこれを達成するために文字列補間を使用していますが、その結果を返します。ここに私のコードは次のとおりです。 MongoDB BSON Aggregationパイプラインの正規表現 - PythonからPHPへの正規表現の変換

$regex = new \MongoDB\BSON\Regex ("^{$this->device_id}:", 'i'); 

$pipeline = [ 
     [ 
     '$match' => [ 
     '_id' => $regex, 

     ]] 

マイドキュメントの_idはdevice_id:datehourあるタイプ'london_10:2016-10-05 09'です。

私は(文字列)$の正規表現をのvar_dumpとき、私が働いているように見える次のことを、得る:

string(15) "/^london_10:/i" 

問題がパイプラインにこれ​​を追加するとき、それは空のコレクションを返すことです。私が働いて確認したが、Pythonで書かれている同等のコードを持っている、と私はPHPでそれを書き換える必要があります。

pipeline = [ 
     { 
      '$match': { 
       "_id": re.compile("^%s:" %(self.device_id)) 
      } 
     } 
    ] 
+1

正規表現は問題ありません。あなたは '$ pipeline'を動作させる方法を見つける必要があります。それを使用する方法に関する文書はありませんか? –

+0

正規表現を確認していただきありがとうございます。問題が私のパイプラインでさらに下流にあることがわかりました。 – ugotchi

答えて

0

問題の元のコードが実際に正しいです - 私は、問題はこの部分ではないことがわかりました私のパイプラインの、しかしさらに下流に。

+0

私はそれがあなたの元の質問を話題とは思わないと思う。この回答を投稿するのではなく、実際の問題を示す質問を編集し、適切な解決策を投稿するか、投稿を削除してください。 –

+0

確かに、私は同意しない。私の理由は、新しいMongoDB \ BSON \ Regexを使った文字列補間の例は非常にまれで、この時点で見つけることができませんでした。これは正しく動作するソリューションの例であり、同様の問題を抱えている他の人に役立つ可能性があります。 – ugotchi

+0

私はあなたの質問に実際に将来の訪問者を助ける素晴らしいものが含まれていることを否定しませんが、今はこの情報を見つけることは不可能です。タイトルとボディを変更して、その強みを目立たせるようにしてください。今、Python regexをPHPに変換しようとしているユーザーがここに来ると、そのページの内容がわかるとそのページが閉じられます。 –