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'}
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
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()