2015-05-19 21 views
9

Mới đối với MongoDb và Python (webapp2). Vì vậy, tôi đã tìm nạp một số dữ liệu từ cơ sở dữ liệu mongodb. Nhưng tôi không thể sử dụng json.dumps trên dữ liệu được trả về. Dưới đây là mã của tôi:Pymongo/bson: Chuyển đổi đối tượng python.cursor.Cursor thành đối tượng có thể tuần tự/JSON

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

này ném một lỗi:

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

Loại exchangedatapymongo.cursor.Cursor. Làm thế nào tôi có thể chuyển đổi nó thành một đối tượng json?

+0

liên quan: http://stackoverflow.com/questions/13241878/convert-pymongo-cursor-to-json. – alecxe

+0

Chuyển con trỏ sang danh sách các đối tượng: 'self.response.write (json.dumps (danh sách (trao đổi)))' – Monkpit

+0

Mongo trả về một đối tượng 'con trỏ' thay vì một' danh sách' dữ liệu thực tế. Bạn sẽ cần phải chuyển đổi nó thành một 'danh sách' đầu tiên như Kyle đã đề cập. –

Trả lời

15

Sử dụng bãi từ 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

Xin lỗi vì đã trả lời trễ nhưng cảm ơn! –

Các vấn đề liên quan