Ma réponse de MongoDB après avoir interrogé une fonction agrégée sur un document en utilisant Python, elle renvoie une réponse valide et je peux l'imprimer mais je ne peux pas la renvoyer.
Erreur:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
Impression:
{'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}
Mais quand j'essaye de revenir:
TypeError: ObjectId('51948e86c25f4b1d1c0d303c') is not JSON serializable
C'est l'appel 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 est bien connecté et la collection est là aussi et j'ai récupéré un résultat attendu valide, mais lorsque j'essaye de retourner, cela me donne une erreur Json. Toute idée de la façon de reconvertir la réponse en JSON. Merci