पाइथन का उपयोग करते हुए दस्तावेज़ पर एक एकत्रित फ़ंक्शन को क्वेरी करने के बाद MongoDB से मेरी प्रतिक्रिया, यह वैध प्रतिक्रिया देता है और मैं इसे प्रिंट कर सकता हूं लेकिन इसे वापस नहीं कर सकता।
त्रुटि:
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 में कैसे बदला जाए। धन्यवाद