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

How to set limit() into MongoQuery Using PHP?

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

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);

但是我遇到了致命错误

Call to undefined function limit()

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

在PHP中,limit()MongoCursorclass的方法,不是数组的方法。你需要先获取一个游标,然后调用它的limit()方法:

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

您还可以使用 limit 参数将选项数组添加到 find() 调用:

$collection->find($query, ['limit' => 2]);

新的 PHP MongoDB 库没有 limit()sort() 方法,就像旧的 PHP Mongo 图书馆了。这些现在必须在查询时指定,例如:

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

如果您使用的是MongoDB driver with the MongoDB 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));

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

$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

滚石乐队 - 给我庇护所:36

汤姆佩蒂 - 玛丽珍的最后一支舞:34

Led Zeppelin - Whole Lotta Love:29

滚石乐队 -(我无法拒绝)满意度:28

蝎子 - 像飓风一样摇滚你:28

Led Zeppelin - 嘿嘿我能做什么:28

...