2016-04-26 34 views
1

最初のクエリはRobomongoで動作します。しかし、それをPHPに変換する際に問題があります。MongoDBのクエリをPHPに変換する

私は更新されたバージョンを含めました。何かが不足している場合は教えてください。

これは、(MongoDBのクエリ)

db.statusNew.find(
    {_id: ObjectId("123")}, 
    { 
     statuses: { 
     $elemMatch: { 
      id : 321 
     }} 
    } 
).limit(1) 

これは動作しません(PHPへの翻訳が)

$queryOri = array(
    (_id: new MongoId($id)), 
    (
     statuses: (
     $elemMatch: (
      id : $tweetID['id'] 
    )) 
) 
); 

$query = $collection.find($queryOri).limit(1); 

更新動作します!

$collection -> find(
    array('_id' => new MongoId($id)), 
    array(
     'statuses' => array(
      $elemMatch: (
       id: $tweetID['id'] 
      ) 
     ) 
    ) 
); 

アレイは、次のようになります。

Array 
(
    [_id] => MongoId Object 
    (
     [$id] => 123 
    ) 

    [statuses] => Array 
    (
     [0] => Array 
      (
      [id] => 321 
      [text] => Tweet no 1 
      ) 
     [1] => Array 
      (
      [id] => 322 
      [text] => Tweet no 2 
      ) 
     [2] => Array 
      (
      [id] => 323 
      [text] => Tweet no 3 
      ) 
    ) 
) 

答えて

0
$collection->find(
    array('_id' => new MongoId($id)), 
    array(
     'statuses' => array(
      '$elemMatch' => array(
       'id'=>$tweetID['id'] 
      ) 
     ) 
    ) 
); 

あなたは(:)ではなくassingmentの(=>)コロンを使用する必要があります。 mongodbでは中括弧はPHPで配列のみとみなします。この答えが得られたら幸いです。

関連する問題