così ho creato un oggetto Cursor avendoPosso ottenere solo il primo oggetto in un oggetto Cursore (pymongo)?
cdb=self.mongo['bleh_bleh_bleh_setup_here']
data=cdb[collection].find(query_commands_here)
Non si preoccupi per la sintassi di cui sopra. Supponiamo che io possa creare con successo tale oggetto cursore
So che posso fare un ciclo for
per scorrere l'oggetto, ma tutto ciò che voglio è il primo oggetto di questo oggetto. Esiste un modo più efficiente rispetto al ciclo?
EDIT:
per rendere le cose più chiare, il 'bleh_bleh_bleh_setup_here' è semplicemente il percorso per la connessione al MongoDB desiderata, e 'query_commands_here' sono domande come {field1:{'$gt':num1}, field2:{'$ne':num2}}
quel genere di cose. La linea
data=cdb[collection].find(query_commands_here)
mi darà un oggetto Cursor che posso iterare con un ciclo for
. Quindi cose come
for item in data:
print item
stamperà ciascuna voce nell'oggetto. Funziona bene. Tuttavia, secondo la documentazione, questo oggetto del cursore dovrebbe avere il metodo chiamato .hasNext()
, che dovrebbe restituire True se c'è una voce successiva. Finora, non ho trovato un modo per farlo funzionare per qualche strana ragione. data.next()
mi dà una voce però. Voglio assicurarmi di avere quella condizione per assicurarmi di non chiamare .next()
per un oggetto cursore che non contiene nulla, anche se non prevedo questo tipo di situazione, ma suppongo che si verificherebbe a un certo punto .
Grazie! In questo momento voglio conservare tutte le informazioni nell'oggetto Cursor mentre sto recuperando alcune informazioni dalla prima voce (dato che avrei un comando sort nel file '.find'). Sarebbe abbastanza efficiente usare 'cdb [collection] .find()' e un'altra riga con 'cdb [collection] .find_one (query_command_here, sort [('field_to_sort': -1)]'? – JChao
o meglio, tutto voglio un campo di quel risultato 'find_one' Come posso ottenere quello? – JChao
@JChao Penso che potresti semplicemente stare bene con un unico comando' find() 'Puoi chiamare' cursor.next() 'per ottenere prima registra e poi chiama ['cursor.rewind()'] (http://api.mongodb.org/python/current/api/pymongo/cursor.html#pymongo.cursor.Cursor.rewind) per resettare il suo stato. Io personalmente non l'ho provato, per favore testate attentamente e registrate le query inviate al server Grazie – alecxe