Я ищу, чтобы создать и обработать курсор в python, как курсоры изначально работают в монго. Я знаю, что предполагаемый способ состоит в том, чтобы сделать «result = collection.find()» и сделать «для записи в результате», но я ищу, чтобы обернуть функциональность итерации в классе. Я хотел бы иметь возможность создать новый объект класса и вызвать функцию, например. init_cursor(), чтобы создать соединение db, и найдите find, который возвращает курсор. Мне бы хотелось, чтобы у меня была функция get_next(), которая переместилась бы к следующему результату и задала члены данных класса на основе результата. Вот pesudo-код:PyMongo Cursor Iteration
class dataIter():
def __init__(self):
self.collection = pymongo.Connection().db.collection
self.cursor = self.collection.find({}) #return all
self.age = None
self.gender = None
def get_next(self):
if self.cursor.hasNext():
data = self.cursor.next()
self.set_data(data)
def set_data(self, data):
self.age = data['age']
self.gender = data['gender']
Таким образом, я мог бы просто позвонить:
obj.get_next()
age = obj.age
gender = obj.gender
или некоторые другие функции помогают извлекать данные из каждого документа
Если вы собираетесь обернуть курсор, вы должны построить в каком-либо механизме для обновления соединения каждый раз. Курсор не должен удерживаться настойчиво, как вы делаете в своем init. Его нужно было бы отбросить и обновить. Идея состоит в том, чтобы получить курсор и извлечь результаты в отдельные объекты. – jdi