【发布时间】:2018-02-19 12:02:07
【问题描述】:
我正在尝试使用 MongoDB\Driver\Query 中的选项:
$options = array();
...
if (isset($limit['page']))
{$options['skip']=($limit['page'] - 1) * $limit['hpp'];}//20
if (isset($limit['hpp']))
{$options['limit']=$limit['hpp'];//20
$options['batchSize']=$limit['hpp'];}//20
print('<br />--------$options :<br />');
print_r($options);
$query = new MongoDB\Driver\Query($search, $options);
print('<br />********$query :<br />');
echo '<pre>';
print_r($query);
echo '</pre>';
如果 $options 看起来没问题:
--------$选项:
数组 ( [排序] => 数组 ( [_id] => 1 ) [跳过] => 20 [限制] => 20 [batchSize] => 20 )
$query 没有给我很好的选择:
********$query :
MongoDB\Driver\Query Object
(
[query] => stdClass Object
(
[$orderby] => stdClass Object
(
[_id] => 1
)
[$query] => stdClass Object
(
)
)
[selector] =>
[flags] => 0
[skip] => 20
[limit] => 0
[batch_size] => 0
[readConcern] =>
)
limit 和batch_size 不等于20,为什么?请问该怎么做?
提前致谢
【问题讨论】:
-
查询对象看起来很旧。类似于 v1.0 的驱动程序。您使用的是什么版本? php、mongodb和驱动程序。
-
为什么老? php7, mongodb 1.2.6 驱动=?
-
查询应该类似于
filter=>Object, options=>Object, readConcern=>Object,请参阅 SaschaM78 的回答。您的print_r($query);在顶层返回选项,而不是在选项对象内。 IIRC 很久以前就这样了。