Каково значение пустого курсора в добавлении?

Я вижу что-то из добавлений в с pymongo 3.2.2. Вопрос: почему они в документации используют один cursor я опустошаю в примере добавлений, чем-то как это:

>>> for result in collection.aggregate([], cursor={}):
...     pass

cursor={}, будь пустым и я не понимаю porqué они это делают. Они говорят, что он используется для консистентного поведения, но в действительности у меня не остается очень ясным. Потом я искал в api de mongo и я нашел использование для курсора:

db.orders.aggregate(
                     [
                       { $match: { status: "A" } },
                       { $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
                       { $sort: { total: -1 } },
                       { $limit: 2 }
                     ],
                     {
                       cursor: { batchSize: 0 }
                     }
                   )

Использование cursor в этом случае, если я это понимаю и знаю, зачем он служит. Но использование для предыдущего случая я не знаю, что значит. Кто-то, кто столкнулся бы с этим вопросом или узнал бы определение, он agredecería, что помог мне.

1
задан 28.11.2018, 10:47
2 ответа

Со ссылкой, которую ты добавил, я понимаю лучше проблему.

Начиная с версии 2.6, mongodb ввел курсоры, которые создаются добавляя признак cursor:{} в параметры aggregate. Эквивалент в pymongo состоял в том, чтобы перемещать аргумент cursor={}, пустой словарь, который каким бы то ни было образом нужно видеть "пустым курсором".

Когда используются курсоры, aggregate возврати iterador класса CommandControl. В общем, в python, iteradores гораздо более соответствующие, чем списки или словарь, чтобы обрабатывать длинные последовательности результатов. Начиная с версии 2.9, использование курсоров превратилось в назначенное по умолчанию поведение и уже не было надо перемещать аргумент cursor={}, перемещая параметры контроля курсора прямо как номинальные аргументы aggregate.

Документация, которую ты читаешь, - рекомендации, чтобы облегчать миграцию. Поскольку в версии 3 всегда используют курсоры, рекомендуй изменять старые программы для того, чтобы они использовали также курсоры. Аргумент cursor={} только служи для того, чтобы создать эти курсоры в старых версиях; начиная с версии 2.9 не используется и игнорируется. Когда говорят о "связности", он относится к тому, что все версии использовали курсоры.

0
ответ дан 03.12.2019, 21:07

Я не был способен находить ссылку этого cursor я опустошаю. Он кажется, относится друг к другу о какой-то оставшейся части документации javascript, что остался в документации pymongo.

В pymongo всегда используется назначенный по умолчанию курсор (выбор useCursor=True). Если ты хочешь изменить batchSize, достаточно добавлять выбор как номинальный аргумент, batchSize=0 (документация aggregate).

Если ты думаешь, что это не ошибка документации, он добавляет конкретную ссылку, которую ты смотришь, чтобы мочь показывать тебя лучше.

0
ответ дан 03.12.2019, 21:07
  • 1
    Если в pymongo всегда используется назначенный по умолчанию курсор, но мой вопрос - относительно agregaci и # 243; n, потому что est и # 225; он опустошил, смотри соединение documentaci и # 243; n api.mongodb.com/python/current/… , часть agregaci и # 243; n. –  julian salas 28.07.2016, 22:38
  • 2
    Уже я нашел ссылку и буду давать тебе новый ответ. Я рекомендую тебе, что ссылка она в и # 241; adas в начальный вопрос. –  ChemaCortes 29.07.2016, 02:59