sto cercando di recuperare alcuni ID che esistono in un database Mongo con il seguente codice:pymongo.errors.CursorNotFound: id cursore '...' non valida sul server di
client = MongoClient('xx.xx.xx.xx', xxx)
db = client.test_database
db = client['...']
collection = db.test_collection
collection = db["..."]
for cursor in collection.find({ "$and" : [{ "followers" : { "$gt" : 2000 } }, { "followers" : { "$lt" : 3000 } }, { "list_followers" : { "$exists" : False } }] }):
print cursor['screenname']
print cursor['_id']['uid']
id = cursor['_id']['uid']
Tuttavia, dopo una breve mentre, io sono ricevere questo errore:
pymongo.errors.CursorNotFound: cursor id '...' not valid at server.
ho trovato questo article che si riferisce a questo problema. Tuttavia non mi è chiaro quale soluzione prendere. È possibile utilizzare find().batch_size(30)
? Che cosa fa esattamente il comando sopra? Posso prendere tutti gli ID dei database usando batch_size
?
Ho definito il batch_size su 50. Tuttavia ho ricevuto lo stesso errore pymongo.errors.CursorNotFound: id del cursore '' non valido al servizio er. Qual è il giusto valore che devo impostare batch_size? –
@snakeplissken - aggiornato la mia risposta –
Come posso essere sicuro con l'uso del timeout. Come posso essere sicuro che il cursore sia chiuso? –