【问题标题】:Aggregation operation failed: localhost:27017: The 'cursor' option is required, except for aggregate with the explain argument聚合操作失败:localhost:27017:需要“光标”选项,但带有解释参数的聚合除外
【发布时间】:2018-09-07 13:03:17
【问题描述】:

我正在使用来自 link 的 mongoDB 库和 CI。我想加入两个表,所以我发现可以使用 lookup

我正在使用下面的代码

$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

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

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

【问题讨论】:

标签: php mongodb codeigniter


【解决方案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

【讨论】:

  • 您有机会尝试我的回答吗?不幸的是,您使用的库没有 3.4 版本所需的参数 to send 选项。
  • 未获取库中使用的驱动程序“使用 MongoDB\Driver\{Query, Manager, Command, BulkWrite, Cursor, WriteConcern, WriteResult, ReadPreference, ReadConcern};"
【解决方案2】:

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

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

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

要使用默认批量大小指示游标,请指定游标:{}。

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

【讨论】:

    猜你喜欢
    • 2018-10-10
    • 2019-11-29
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2017-10-12
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多