MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Serialisasi MongoDB find() kembali ke array JSON non-anonim, menggunakan PyMongo

Masalahnya di sini adalah Anda sudah merangkai respons sebagai JSON sebelum meneruskannya ke struktur data lain (sekarang sebagai string) untuk mengembalikannya sebagai JSON. Jadi pada dasarnya Anda melakukan penyandian ganda dan "string" disandikan.

Jadi cukup masukkan data sekali saja:

docs = mongodb.find(...query...)
return bson.json_util.dumps({ 'success': True, 'mycollectionKey': docs })

Jadi pada koleksi kecil seperti ini:

{ "_id" : ObjectId("5343aeb5efbdb94c3647c8df"), "field" : "BBB" }
{ "_id" : ObjectId("5343aebbefbdb94c3647c8e0"), "field" : "aaa" }
{ "_id" : ObjectId("5343aebfefbdb94c3647c8e1"), "field" : "AAA" }

Anda mendapatkan hasil seperti ini:

{   
    "mycollectionKey": [
        {"field": "BBB", "_id": {"$oid": "5343aeb5efbdb94c3647c8df"}}, 
        {"field": "aaa", "_id": {"$oid": "5343aebbefbdb94c3647c8e0"}}, 
        {"field": "AAA", "_id": {"$oid": "5343aebfefbdb94c3647c8e1"}}
    ], 
    "success": true
}

Jika Anda benar-benar khawatir tentang urutan kedua kunci itu maka Anda dapat menggunakan bson "dumps" untuk pergi ke string kemudian decode dengan dekoder json standar untuk mendapatkan dict asli dengan objek Mongo yang di-deserialized, kemudian dimasukkan lebih lanjut ke perintah Anda.

Tapi sebenarnya klien Anda seharusnya tidak peduli dengan urutan kunci dan hanya mengharapkan elemen root tersebut.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. bagaimana cara memeriksa apakah ada bidang dalam dokumen tertentu Mongodb menggunakan C #?

  2. Bagaimana cara menjalankan perintah pencarian teks lengkap di MongoDB dengan Java Driver?

  3. Bagaimana cara mendapatkan dokumen berdasarkan Filter Tanggal (Minggu, Bulan, dan Tanggal Kustom) di MongoDB?

  4. Apakah ada cara untuk mendapatkan irisan sebagai hasil dari Find()?

  5. Pilih Max() dengan grup oleh di mongodb