sort mongoclient docs create python mongodb pymongo

python - mongoclient - pymongo limit



Cómo ordenar mongodb con pymongo (5)

¿Por qué Python usa una lista de tuplas en lugar de dict?

En Python no puede garantizar que el diccionario se interpretará en el orden que usted declaró.

Entonces, en mongo shell puedes hacer .sort({''field1'':1,''field2'':1}) y el intérprete debe ordenar el campo1 en el primer nivel y el campo 2 en el segundo nivel.

Si este sintax se usó en python, existe la posibilidad de ordenar field2 en el primer nivel. Con la tupla no hay riesgo.

.sort([("field1",pymongo.ASCENDING), ("field2",pymongo.DESCENDING)])

Estoy tratando de usar la función de ordenar cuando consulto mi mongoDB, pero está fallando. La misma consulta funciona en la consola MongoDB pero no aquí. El código es el siguiente:

import pymongo from pymongo import Connection connection = Connection() db = connection.myDB print db.posts.count() for post in db.posts.find({}, {''entities.user_mentions.screen_name'':1}).sort({u''entities.user_mentions.screen_name'':1}): print post

El error que obtengo es el siguiente:

Traceback (most recent call last): File "find_ow.py", line 7, in <module> for post in db.posts.find({}, {''entities.user_mentions.screen_name'':1}).sort({''entities.user_mentions.screen_name'':1},1): File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/cursor.py", line 430, in sort File "/Library/Python/2.6/site-packages/pymongo-2.0.1-py2.6-macosx-10.6-universal.egg/pymongo/helpers.py", line 67, in _index_document TypeError: first item in each key pair must be a string

Encontré un enlace en otro lado que dice que necesito colocar una ''u'' delante de la tecla si uso Pymongo, pero tampoco funcionó. Alguien más consigue que esto funcione o es un error.


Esto también funciona:

db.Account.find().sort(''UserName'', -1) db.Account.find().sort(''UserName'', 1)

Estoy usando esto en mi código, por favor comente si estoy haciendo algo mal aquí, gracias.


Puedes intentar esto:

db.Account.find().sort("UserName") db.Account.find().sort("UserName",pymongo.ASCENDING) db.Account.find().sort("UserName",pymongo.DESCENDING)


.sort() , en pymongo, toma la key y la direction como parámetros.

Entonces, si quiere ordenar por, digamos, id , entonces debe .sort("_id", 1)

Para múltiples campos:

.sort([("field1", pymongo.ASCENDING), ("field2", pymongo.DESCENDING)])


.sort([("field1",pymongo.ASCENDING), ("field2",pymongo.DESCENDING)])

Python usa la clave, dirección. Puedes usar el camino anterior.

Entonces en tu caso puedes hacer esto

for post in db.posts.find().sort(''entities.user_mentions.screen_name'',pymongo.ASCENDING): print post