2015-04-13 9 views
12

Sto cercando di recuperare i dati da mongodb con python. Il mio db contiene molti dati. Quindi voglio limitare i dati durante il recupero. Ho provatoCome limitare la query mongo in python

import datetime 
from pymongo import Connection 
connection = Connection('localhost',27017) 
db = connection['MyWork'] 


db_data = db.myusers.find().limit(2) 
#db_data = db.myusers.find()[0:2] 
print db_data 
print db_data.count() 
print db_data[0] 
print db_data[1] 
print db_data[2] 

Ma io sono sempre più di due documenti quando ho provato in precedenza. Sto usando il driver pymongo. Come limitare i valori

<pymongo.cursor.Cursor object at 0x000000000267D518> 
3 
{u'age': 24.0, u'_id': ObjectId('552b6e90aad3e2d909d5fb28'), u'place': u'Ravipadu', u'name': u'Shiva'} 
{u'age': 28.0, u'_id': ObjectId('552b6eabaad3e2d909d5fb29'), u'place': u'Rajahmundry', u'name': u'Anil'} 
{u'age': 30.0, u'_id': ObjectId('552b6ec1aad3e2d909d5fb2a'), u'place': u'Manchili', u'name': u'Kishore'} 
+1

Hai provato [** 'db.myusers.find() [0: 2]' **] (http://api.mongodb.org/python/current/api/pymongo/cursor. html # pymongo.cursor.Cursor .__ getitem__)? Ciò restituirà questo cursore con un limite di 2 e un salto di 0 applicato. – chridam

+1

duplicato di http://stackoverflow.com/q/14712402/2327328 – philshem

+0

@ForceBru, Ya ha provato ma ottenendo ancora tutti i valori – Mulagala

risposta

16

Come specificato nel this question, accesso indicizzato ignorerà il limit. E count() non obbedisce al limite o salta per impostazione predefinita come spiegato allo manual. È possibile passare with_limit_and_skip=True per far funzionare count() con limite.

print db_data.count(with_limit_and_skip=True) 

Oppure si può scorrere il cursore per vedere limite in vigore.

for data in db.myusers.find().limit(2): 
    print data 
+1

Ha lavorato grazie – Mulagala