Операция агрегации завершилась неудачно: localhost: 27017: требуется опция 'cursor', за исключением агрегирования с аргументом объяснения - PullRequest
0 голосов
/ 07 сентября 2018

Я использую библиотеку mongoDB из link с 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

Как я могу добавить курсор в этом случае

Я проверил другие подобные ответы, но не получил, как я могу добавить курсор в этом случае

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Вы можете использовать другую библиотеку 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))
);

Подробнее здесь

0 голосов
/ 10 сентября 2018

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

Укажите документ, который содержит параметры, управляющие созданием объект курсора.

Изменено в версии 3.6: MongoDB 3.6 исключает использование агрегата команда без опции курсора, если команда не включает объясните вариант. Если вы не включите опцию объяснения, вы должны укажите опцию курсора.

Чтобы указать курсор с размером пакета по умолчанию, укажите курсор: {}.

Чтобы указать курсор с размером пакета не по умолчанию, используйте курсор: { batchSize:}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...