यहां समस्या यह है कि आपने JSON के रूप में इसे वापस करने के लिए किसी अन्य डेटा संरचना (अब एक स्ट्रिंग के रूप में) में पास करने से पहले JSON के रूप में प्रतिक्रिया को पहले ही कड़ा कर दिया है। तो आप मूल रूप से एक डबल एन्कोड कर रहे हैं और "स्ट्रिंग" एन्कोड हो जाता है।
तो बस एक बार डेटा पास करें:
docs = mongodb.find(...query...)
return bson.json_util.dumps({ 'success': True, 'mycollectionKey': docs })
तो इस तरह के एक छोटे से संग्रह पर:
{ "_id" : ObjectId("5343aeb5efbdb94c3647c8df"), "field" : "BBB" }
{ "_id" : ObjectId("5343aebbefbdb94c3647c8e0"), "field" : "aaa" }
{ "_id" : ObjectId("5343aebfefbdb94c3647c8e1"), "field" : "AAA" }
आपको इस तरह का परिणाम मिलता है:
{
"mycollectionKey": [
{"field": "BBB", "_id": {"$oid": "5343aeb5efbdb94c3647c8df"}},
{"field": "aaa", "_id": {"$oid": "5343aebbefbdb94c3647c8e0"}},
{"field": "AAA", "_id": {"$oid": "5343aebfefbdb94c3647c8e1"}}
],
"success": true
}
यदि आप वास्तव में उन दो चाबियों के क्रम के बारे में चिंतित हैं तो आप स्ट्रिंग पर जाने के लिए बीएसओएन "डंप्स" का उपयोग कर सकते हैं, फिर मानक जेसन डिकोडर के साथ डीकोड कर सकते हैं ताकि मोंगो ऑब्जेक्ट्स deserialized के साथ मूल निर्देश प्राप्त कर सकें, फिर आगे डाल दिया आपका आदेशित निर्देश।
लेकिन वास्तव में आपके क्लाइंट को चाबियों के क्रम की परवाह नहीं करनी चाहिए और केवल उन मूल तत्वों की अपेक्षा करनी चाहिए।