如何使用 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()
是MongoCursor
class的方法,不是数组的方法。你需要先获取一个游标,然后调用它的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
...
我必须将 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()
是MongoCursor
class的方法,不是数组的方法。你需要先获取一个游标,然后调用它的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
...