PyMongo Curseur Itération

Je suis à la recherche pour créer et gérer un curseur en python la façon dont les curseurs en mode natif œuvre de mongo. Je sais que le but est de faire " résultat = collection.find () "et n'a" pour les enregistrer dans le résultat, mais je suis à la recherche d'envelopper itération de la fonctionnalité dans une classe. Je voudrais être en mesure de créer un nouvel objet de classe et d'appeler une fonction par exemple init_cursor() pour créer une connexion db et faites une recherche de retour d'un curseur. Je voudrais ensuite le fait d'avoir une get_next() fonction qui permettrait de passer à la prochaine résultat et de l'ensemble de membres de données de classe en fonction du résultat. Voici le pesudo-code:

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']

De cette façon, je serais en mesure de simplement appeler:

obj.get_next()
age = obj.age
gender = obj.gender

ou certains autres fonctions d'aide à récupérer des données à partir de chaque document

Si vous allez envelopper d'un curseur, vous devez construire dans un mécanisme d'actualisation de la connexion à chaque fois. Un curseur ne doit pas être tenu sur la persistance comme vous le faites dans votre init. Il devrait être jeté et actualisé. L'idée est d'obtenir votre curseur et extraire vos résultats dans des objets détachés.

OriginalL'auteur Ghjnut | 2012-05-03