Phản hồi của tôi từ MongoDB sau khi truy vấn một hàm tổng hợp trên tài liệu bằng Python, Nó trả về phản hồi hợp lệ và tôi có thể in nó nhưng không thể trả lại.
Lỗi:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
In:
{'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}
Nhưng khi tôi cố gắng quay lại:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
Đó là cuộc gọi 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 được kết nối tốt và bộ sưu tập cũng ở đó và tôi đã nhận lại kết quả mong đợi hợp lệ nhưng khi tôi cố gắng trả lại nó cho tôi lỗi Json. Bất kỳ ý tưởng nào về cách chuyển đổi phản hồi trở lại thành JSON. Cảm ơn