聚合操作失败:本地主机:27017:需要“ cursor”选项,但带有explain参数的聚合除外

时间:2018-09-07 13:03:17

标签: php mongodb codeigniter

我正在将link中的mongoDB库与CI配合使用。我想加入两个表,所以我发现可以使用查找

我正在使用以下代码

$this->load->library('mongo_db',array('activate' => 'default'),'mongo_db');

$res = $this->mongo_db->aggregate(
    'firstTable',
    array(

        '$lookup' => array(
        'from' => 'secondTable',
        'localField' => '_id',
        'foreignField' => 'foreignKey',
        'as' => 'user',                 
    )               
));

echo '<pre>'; print_r($res);

它给出错误为

Aggregation operation failed: localhost:27017: The 'cursor' option is required, except for aggregate with the explain argument

在这种情况下如何添加光标

我检查了其他类似的答案,但在这种情况下没有得到如何添加光标的方法

2 个答案:

答案 0 :(得分:1)

您可以使用here中的另一个codeigniter库。该库允许您传递聚合选项。

您可以尝试下面的聚合查询。将batchsize设置为0,以使mongodb使用服务器的默认批处理大小。

$res = $this->mongo_db->aggregate(
    'firstTable',
     array(
       '$lookup' => array(
         'from' => 'secondTable',
         'localField' => '_id',
         'foreignField' => 'foreignKey',
        'as' => 'user',                 
       )                
     ),
     array('cursor' => array('batchSize' => 0))
);

更多信息here

答案 1 :(得分:0)

https://docs.mongodb.com/manual/reference/command/aggregate/

  

指定一个文档,其中包含控制创建的选项   光标对象。

     

在3.6版中进行了更改:MongoDB 3.6删除了聚合的使用   没有光标选项的命令,除非该命令包含   说明选项。除非您包含解释选项,否则必须   指定光标选项。

     

要使用默认批处理大小指示光标,请指定光标:{}。

     

要指示具有非默认批处理大小的游标,请使用游标:{   batchSize:}。