MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сериализиране на MongoDB find() връщане в неанонимен JSON масив, използвайки PyMongo

Проблемът тук е, че вече сте стрингували отговора като 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
}

Ако наистина се притеснявате за реда на тези два ключа, тогава можете да използвате bson „изхвърлянията“, за да отидете до низ, след което да декодирате със стандартния json декодер, за да получите естествен dict с Mongo обекти, десериализирани, след което допълнително поставени в вашият поръчан dict.

Но всъщност вашият клиент не трябва да се интересува от реда на ключовете и просто да очаква тези основни елементи.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose изберете полета за поддокумент

  2. Flask MongoEngine пагинирани документи с поле за изображение

  3. Как да изпращам известия с angular.js?

  4. Как да пренаредите карти и списъци като Trello?

  5. MongoMapper близо с maxDistance - Mongo::OperationFailure:гео стойностите трябва да са числа: