Я вижу что-то из добавлений в mongodb с 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, что помог мне.
Со ссылкой, которую ты добавил, я понимаю лучше проблему.
Начиная с версии 2.6, mongodb ввел курсоры, которые создаются добавляя признак cursor:{}
в параметры aggregate
. Эквивалент в pymongo состоял в том, чтобы перемещать аргумент cursor={}
, пустой словарь, который каким бы то ни было образом нужно видеть "пустым курсором".
Когда используются курсоры, aggregate
возврати iterador класса CommandControl
. В общем, в python, iteradores гораздо более соответствующие, чем списки или словарь, чтобы обрабатывать длинные последовательности результатов. Начиная с версии 2.9, использование курсоров превратилось в назначенное по умолчанию поведение и уже не было надо перемещать аргумент cursor={}
, перемещая параметры контроля курсора прямо как номинальные аргументы aggregate
.
Документация, которую ты читаешь, - рекомендации, чтобы облегчать миграцию. Поскольку в версии 3 всегда используют курсоры, рекомендуй изменять старые программы для того, чтобы они использовали также курсоры. Аргумент cursor={}
только служи для того, чтобы создать эти курсоры в старых версиях; начиная с версии 2.9 не используется и игнорируется. Когда говорят о "связности", он относится к тому, что все версии использовали курсоры.
Я не был способен находить ссылку этого cursor
я опустошаю. Он кажется, относится друг к другу о какой-то оставшейся части документации javascript, что остался в документации pymongo.
В pymongo всегда используется назначенный по умолчанию курсор (выбор useCursor=True
). Если ты хочешь изменить batchSize
, достаточно добавлять выбор как номинальный аргумент, batchSize=0
(документация aggregate
).
Если ты думаешь, что это не ошибка документации, он добавляет конкретную ссылку, которую ты смотришь, чтобы мочь показывать тебя лучше.