меня возникают трудности с функцией агрегации Мотор давая no fetch_next
Exceptionпитон двигатель предлагает fetch_next исключение на агрегацию
Код
cursor = db[collection].aggregate(myPipeline, cursor = {})
if (yield cursor.fetch_next):
obj = bson.json_util.dumps(cursor.next_object())
self.write(obj)
что рыгнул до следующей
Исключение: : Объект TracebackFuture не имеет атрибута 'fetch_next'
Тогда я попробовал следующее, который был найден в SO вопрос
cursor = yield motor.Op(db[collection].aggregate, x_query)
который предложил то же самое исключение.
Запуск агрегата в Монго оболочки производит результат добросовестного
"result" : [
{
"_id" : "Adam",
"num" : 110
},
{
"_id" : "Argyle",
"num" : 77
},
{
"_id" : "Net Valley",
"num" : 67
},
{
"_id" : "Notts Farm",
"num" : 64
},
{
"_id" : "Sam's Place",
"num" : 59
},
{
"_id" : "Tilly",
"num" : 58
},
{
"_id" : "Xavier",
"num" : 52
}
],
"ok" : 1
Motor не предложил ничего подобного вопроса с find
и `find_one. На самом деле, он отлично работает в противном случае.
Установка была выполнена через pip install motor
на Ubuntu.
Приветствия
Эй, спасибо за головы. И спасибо большое за Мотор. Это невероятно. Im, предполагающий, что вам действительно нужен только cursor.fetch_next один раз в агрегации (дайте результат в объекте результата первой выборки) –
Собственно, если вы используете MongoDB 2.6, и вы передаете «cursor = {}», аргумент с двигателем, то «aggregate» возвращает реальный курсор, который передает вам результаты, как и find(). Таким образом, fetch_next/next_object работает одинаково для агрегации: fetch_next будет извлекать следующую партию * иногда *, когда текущая партия исчерпана (каждые 4 МБ данных). next_object() выдает следующий документ из партии. –
кстати. просто следовать совету и кажется, что предоставление курсора недействительно ('cursor', {})]) failed: непризнанное поле "cursor –