首页 > 解决方案 > mongoDB 的 $slice 运算符在 PHP 中不起作用

问题描述

我有这个 mongoDB 查询:

db.b_activity.find(
    {token_id:"71e32267108b163ccdd3f59ba06c66674b295499"},
    {activity_log:{$slice: -1}}
).pretty();

它在 mongoDB 终端中获得了所有想要的结果,但是当我在 PHP 中编写相同的查询时,它每次都获取完整的数组。

我的 PHP 查询:

$get_current_activity = $this->mongo_b_employee->b_activity->findOne(
    array('token_id'=>$token_id),
    array("activity_log" => array('$slice' => -1))
);

有什么建议我做错了什么吗?

PS:我只是想访问最后一个数组元素。

标签: phpmongodb

解决方案


的签名MongoDB\Collection::findOne()与“shell”略有不同。它需要"projection"key$options作为第二个参数:

$get_current_activity=$this->mongo_b_employee->b_activity->findOne(
    array('token_id'=>$token_id),
    array(
      "projection" => array( "activity_log" => array('$slice' => -1) )
    )
)

推荐阅读