使用PHP将Mongo游标字段过滤为所需的数组索引

时间:2012-02-03 18:11:05

标签: php arrays mongodb

在学习使用Mongo和PHP的过程中,并坚持这一点。 我在Mongo有一个具有以下结构的集合:

array(3){
["timehack"]=>int(..),  
["_id"]=>object..,  
["series"]=>  
array(3){  
    [0]=>int(..),  
    [1]=>int(..),  
    [2]=>int(..)  
}  
}  

我正在尝试查询集合,所以我在“系列”中获得了第一项的所有样本,例如:

$cursor = $collection->find();
$cursor->fields(array=>("timehack"=>true, "_id"=>false, "series.0"=>true));
$arr = $cursor->getNext();
var_dump($arr);

生成的系列数组为空。我怎样才能获得所需的索引? (我意识到我可以获得系列中的所有示例,然后使用代码进行过滤,但我想知道如何使用查询来完成此操作)。感谢。

1 个答案:

答案 0 :(得分:0)

在上面的评论中,您已经确认这适用于shell中的$ slice运算符。那么,为了举例说明$ slice如何在PHP中运行,我推荐你到驱动程序本身的PHP测试。

看看github上的tests / MongoCollectionTest2.php文件中的第33行:

https://github.com/mongodb/mongo-php-driver/blob/master/tests/MongoCollectionTest2.php

代码如下:

$m = new Mongo();
$db = new MongoDB($m, "phpunit");
$this->object = $db->selectCollection('c');
...
...
$results = $this->object->find(array(),array("x" => array('$slice' => 3)))->getNext();

与shell相比,它看起来有点复杂,有很多演员作为对象正在进行(如果我正在阅读它),但希望足以让你开始:)