MongoDB意外查询结果

时间:2013-03-07 06:34:57

标签: php mongodb

所以我正在学习MongoDB,一切正常,直到我想查询并发现它返回的数组不能像我习惯的那样工作。举个例子:

$cursor = $collection->find(array('game' => 'Borderlands 2'));

$array = iterator_to_array($cursor);

到目前为止一直很好,但后来我希望获得一个动态添加到页面的值:

The game is: <?php echo $array['game'] ?>

只有错误。我尝试了很多东西,但后来我var_dump,发现数组包含在一个ID /索引数组下,所以这很有效:

<?php echo $array["5138225097777c4014000001"]["game"] ?>

我找不到任何解释。虽然我现在明白它是如何工作的,但我不确定这是否是我在将值添加到集合中时犯的错误,或者我是否遗漏了某些内容。谢谢!

2 个答案:

答案 0 :(得分:2)

这是因为find返回一个结果数组(并且每个结果都转换为一个数组)。因此,您有一个结果数组,其中Mongo ObjectId作为数组中的键。如果您想获得一个结果,请使用findOne。

答案 1 :(得分:1)

$cursor = $collection->find(array('game' => 'Borderlands 2'));
while ($document = $cursor->getNext()){
      echo $document['game'];
}