MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tuần tự hóa MongoDB find () trả về thành mảng JSON không ẩn danh, sử dụng PyMongo

Vấn đề ở đây là bạn đã xâu chuỗi phản hồi dưới dạng JSON trước khi chuyển nó vào một cấu trúc dữ liệu khác (bây giờ là một chuỗi) để trả về nó dưới dạng JSON. Vì vậy, về cơ bản bạn đang thực hiện mã hóa kép và "chuỗi" được mã hóa.

Vì vậy, chỉ cần chuyển dữ liệu một lần:

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

Vì vậy, trên một bộ sưu tập nhỏ như thế này:

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

Bạn nhận được kết quả như thế này:

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

Nếu bạn thực sự lo lắng về thứ tự của hai khóa đó thì bạn có thể sử dụng "kết xuất" bson để đi đến một chuỗi sau đó giải mã bằng bộ giải mã json tiêu chuẩn để có được một chính tả gốc với các đối tượng Mongo được deserialized, sau đó thêm vào mệnh lệnh đã đặt hàng của bạn.

Nhưng thực sự khách hàng của bạn không nên quan tâm đến thứ tự của các khóa và chỉ mong đợi những yếu tố gốc đó.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Web Scraping và Crawling với Scrapy và MongoDB

  2. Làm cách nào để cập nhật các trường tài liệu trong mongo db bằng trình điều khiển java?

  3. Cách thêm order bằng @query trong kho lưu trữ mongodb

  4. Một cách thanh lịch hơn để xử lý các giá trị lọc trong ứng dụng Angular

  5. JavaScript hết bộ nhớ trong khi phát trực tuyến tệp lớn