万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

PythonとPyMongoのソート(sort()メソッド)のエラー

MongoDB and Python

MongoDB and Python

この本では、 sortをするのに users = dbh.users.find( {"firstname":"jane"}).sort(("dateofbirth", pymongo.DESCENDING))

とか書いている。sort()メソッドの中身はタプル型のオブジェクト。

しかし、

self.col.find({'room_name' : room_name}).sort(('my_num', pymongo.ASCENDING))

とやると

Traceback (most recent call last): File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/gevent/greenlet.py", line 327, in run result = self._run(*self.args, **self.kwargs) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/socketio/virtsocket.py", line 403, in _receiver_loop retval = pkt_ns.process_packet(pkt) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/socketio/namespace.py", line 155, in process_packet return self.process_event(packet) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/flask_socketio/__init__.py", line 58, in process_event return self.socketio._dispatch_message(app, self, message, args) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/flask_socketio/__init__.py", line 127, in _dispatch_message ret = self.messages[namespace.ns_name][message](*args) File "app.py", line 288, in join sorted_list = room_members.sort(room) File "/Users/shinriyo/flask_app/socket_unity/models.py", line 99, in sort res = self.col.find({'room_name' : room_name}).sort(('my_num', pymongo.ASCENDING)) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/pymongo/cursor.py", line 692, in sort self.__ordering = helpers._index_document(keys) File "/Users/shinriyo/.virtualenvs/flask/lib/python2.7/site-packages/pymongo/helpers.py", line 65, in _index_document for (key, value) in index_list: ValueError: too many values to unpack

のエラーが発生した。

Error while sorting in pymongo - Stack Overflow コチラの解説によると、

.sort(['score', pymongo.ASCENDING])

と質問者はしているが

.sort([ ['score', pymongo.ASCENDING] ])

のように[[]]の二重のリスト。。。。