পাইথন ব্যবহার করে দস্তাবেজে একটি সামগ্রিক ফাংশন অনুসন্ধান করার পরে মঙ্গোডিবি থেকে আমার প্রতিক্রিয়া ফিরে আসে, এটি বৈধ প্রতিক্রিয়া দেয় এবং আমি এটি মুদ্রণ করতে পারি তবে এটি ফেরত দিতে পারি না।
ত্রুটি:
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
এটি বিশ্রামের কল:
@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
ডিবি ভালভাবে সংযুক্ত আছে এবং সংগ্রহও রয়েছে এবং আমি বৈধ প্রত্যাশিত ফলাফল ফিরে পেয়েছি তবে যখন আমি এটি ফেরত দেওয়ার চেষ্টা করি তখন আমাকে জসন ত্রুটি দেয়। কীভাবে প্রতিক্রিয়াটিকে আবার JSON এ রূপান্তর করতে হয়। ধন্যবাদ