2015-05-19 6 views
9

Новое для MongoDb и Python (webapp2). Итак, я извлек некоторые данные из базы данных mongodb. Но я не смог использовать json.dumps по возвращенным данным. Вот мой код:Pymongo/bson: преобразовать объект python.cursor.Cursor в объект serializable/JSON

exchangedata = db.Stock_Master.find({"Country": "PHILIPPINES"}, {"_id" : 0})   
self.response.write(json.dumps(exchangedata)) 

Это выдает ошибку:

TypeError: pymongo.cursor.Cursor object at 0x7fcd51230290 is not JSON serializable 

Тип exchangedata является pymongo.cursor.Cursor. Как я могу преобразовать его в объект json?

+0

Связанный: http://stackoverflow.com/questions/13241878/convert-pymongo-cursor-to-json. – alecxe

+0

Преобразование курсора в список объектов: 'self.response.write (json.dumps (list (exchangedata)))' – Monkpit

+0

Mongo возвращает объект 'cursor' вместо фактического' list' данных. Вам нужно будет преобразовать это в «список» сначала, как сказал Кайл. –

ответ

15

Использование отвалов из bson.json_util:

>>> c = pymongo.MongoClient() 
>>> c.test.test.count() 
5 
>>> from bson.json_util import dumps 
>>> dumps(c.test.test.find()) 
'[{"_id": {"$oid": "555cb3a7fa5bd85b81d5a624"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a625"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a626"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a627"}}, {"_id": {"$oid": "555cb3a7fa5bd85b81d5a628"}}]' 
+0

Извините за поздний ответ, но спасибо, что сработало! –