Python kullanarak belge üzerinde toplanmış bir işlevi sorguladıktan sonra MongoDB'den yanıtım, geçerli yanıt döndürüyor ve yazdırabiliyorum ama geri döndüremiyorum.
Hata:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
Yazdır:
{'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}
Ama geri dönmeye çalıştığımda:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
RESTfull çağrı:
@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 iyi bağlandı ve koleksiyon da var ve geçerli beklenen sonucu geri aldım ancak geri dönmeye çalıştığımda bana Json hatası veriyor. Yanıtı JSON'a nasıl dönüştürebileceğiniz hakkında herhangi bir fikir. Teşekkürler