如何使用PHP将limit()设置为MongoQuery?

时间:2017-01-02 06:52:47

标签: php mongodb php-mongodb

我必须使用Mongodb和php,并尝试使用php从mongocollection获取数据。随后的mongoquery与php返回记录成功。但我想为以下查询设置限制。

PHP代码:

$query = array("\$and"=>array(array('fld'=> array("\$in"=> array('4', '14', '20'))), array('stat'=>array("\$eq"=>"A"))));

$cursor = $this->collection->find($query);

我也尝试了以下方式

$query = array("\$and"=>array(array('fld'=> array("\$in"=> array('4', '14', '20'))), array('stat'=>array("\$eq"=>"A")))).limit(2);

但我得到了致命错误

  

调用未定义的函数limit()

如何在上述查询中使用limit()

4 个答案:

答案 0 :(得分:3)

新的PHP MongoDB库在游标上没有像旧的PHP Mongo库那样的limit()sort()方法。现在必须在查询时指定这些,例如:

$collection->find($query, [
    'limit' => 10,
    'sort'  => [ 'date' => -1 ],
    'projection' => [
        '_id' => 1,
        'description' => 1,
    ]
];

答案 1 :(得分:2)

在PHP中,limit()MongoCursor类的方法,而不是数组。您需要先获取光标,然后调用其limit()方法:

$collection->find($query)->limit(2);

您还可以使用find()参数

limit来电添加选项数组
$collection->find($query, ['limit' => 2]);

答案 2 :(得分:0)

如果您将MongoDB driverMongoDB PHP library一起使用,那么

require 'vendor/autoload.php';

$client = new MongoDB\Client("mongodb://localhost:27017");
//SELECT * FROM YOUR_TABLE_NAME LIMIT 10
//db.YOUR_COLLECTION_NAME.find({}).limit(10);
$result = $clinet->YOUR_DB_NAME->YOUR_COLLECTION_NAME->find(array(),array('limit'=>10));

答案 3 :(得分:0)

这是新的PHP mongo的有效解决方案。它将通过每条记录中的num_plays值显示我的收藏集中播放次数最多的歌曲。

$collection = (new MongoDB\Client)->scottybox->pianobar;
        // display top 25 played titles/artist sorted by num_plays
        $filter = [];
        $result = $collection->find($filter, 
[ 'limit'          => 25,
   'sort'          => [ 'num_plays' => -1 ],
   'projection'    => [
                    'num_plays'   => 1,
                    'artist'      => 1,
                    'title'       => 1
                    ]]
        );

        echo "<h2>Top 25 Played Songs</h2>";
        foreach($result as $row){
            echo $row->artist . " - " . $row->title . ": ";
            echo $row->num_plays . "<br/>";
        }

播放的前25首歌曲

齐柏林飞艇-通往天堂的阶梯:65

滚石乐队-Gimme庇护所:36

汤姆·佩蒂(Tom Petty)-玛丽·简(Mary Jane)的最后一支舞:34

齐柏林飞艇-整个洛塔之恋:29

滚石乐队-(我无法接受)满意度:28

蝎子-像飓风般摇滚:28

齐柏林飞艇-嘿,我该怎么办:28

...