web-dev-qa-db-fra.com

Comment limiter la requête Mongo dans python

J'essaie de récupérer des données de mongodb avec python. Ma base de données contient beaucoup de données. Je souhaite donc limiter les données lors de la récupération. j'ai essayé

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]

Mais je reçois plus de deux documents lorsque j'ai essayé ci-dessus. J'utilise le pilote pymongo. Comment limiter les valeurs

<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'}
25
Mulagala

Comme spécifié dans cette question , l'accès indexé ignorera le limit. Et count() n'obéit pas à la limite ou ne saute pas par défaut comme expliqué le manuel . Vous pouvez passer with_limit_and_skip=True Pour faire fonctionner count() avec limit.

print db_data.count(with_limit_and_skip=True)

Ou vous pouvez parcourir le curseur pour voir la limite en vigueur.

for data in db.myusers.find().limit(2):
    print data
32
taskinoor

db.myusers.find(limit=2)

Si vous souhaitez appliquer une condition, vous pouvez utiliser db.myusers.find({query}, limit=2) et pour compter le nombre de résultats, utilisez db.myusers.find({query}, limit=2).count()

0
Jyothsna Gadde