การตอบกลับของฉันกลับมาจาก MongoDB หลังจากค้นหาฟังก์ชันรวมบนเอกสารโดยใช้ Python มันส่งคืนการตอบสนองที่ถูกต้องและฉันสามารถพิมพ์ได้ แต่ไม่สามารถส่งคืนได้
ข้อผิดพลาด:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
พิมพ์:
{'result': [{'_id': ObjectId('51948e86c25f4b1d1c0d303c'), 'api_calls_with_key': 4, 'api_calls_per_day': 0.375, 'api_calls_total': 6, 'api_calls_without_key': 2}], 'ok': 1.0}
แต่เมื่อฉันพยายามกลับ:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
เป็นการโทรแบบ RESTfull:
@appv1.route('/v1/analytics')
def get_api_analytics():
# get handle to collections in MongoDB
statistics = sldb.statistics
objectid = ObjectId("51948e86c25f4b1d1c0d303c")
analytics = statistics.aggregate([
{'$match': {'owner': objectid}},
{'$project': {'owner': "$owner",
'api_calls_with_key': {'$cond': [{'$eq': ["$apikey", None]}, 0, 1]},
'api_calls_without_key': {'$cond': [{'$ne': ["$apikey", None]}, 0, 1]}
}},
{'$group': {'_id': "$owner",
'api_calls_with_key': {'$sum': "$api_calls_with_key"},
'api_calls_without_key': {'$sum': "$api_calls_without_key"}
}},
{'$project': {'api_calls_with_key': "$api_calls_with_key",
'api_calls_without_key': "$api_calls_without_key",
'api_calls_total': {'$add': ["$api_calls_with_key", "$api_calls_without_key"]},
'api_calls_per_day': {'$divide': [{'$add': ["$api_calls_with_key", "$api_calls_without_key"]}, {'$dayOfMonth': datetime.now()}]},
}}
])
print(analytics)
return analytics
db เชื่อมต่อได้ดีและคอลเล็กชันก็อยู่ที่นั่นด้วยและฉันก็ได้ผลลัพธ์ที่คาดหวังกลับมา แต่เมื่อฉันพยายามส่งคืนมันทำให้ฉันมีข้อผิดพลาด Json ความคิดใด ๆ ในการแปลงการตอบกลับเป็น JSON ขอบคุณ