将MongoDB查询转换为PHP

时间:2016-04-26 23:56:52

标签: php mongodb

当我在Robomongo运行时,第一个查询有效。但是,我无法将其转换为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
            )
    )
)

1 个答案:

答案 0 :(得分:0)

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

你必须使用冒号(:)而不是assingment(=>)。在mongodb中,每个花括号都会在php中将其视为数组。希望你得到这个答案。