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

Използване на mongo с FLASK и python

Първо find_one ще върне единичен речник или Няма, ако няма съответстващ елемент в колекцията. Така че мисля, че page[0] е еквивалентно на получаване на стойност на речника на страницата за ключ 0

Ако върнатите документи съдържат ObjectId като _id не можете просто да използвате jsonify защото, като ObjectId не може да се сериализира в JSON. Можете да използвате нещо подобно:

jsonify({ 'page': make_public_page({k:v for k, v in page.items() if k != '_id'}))

или можете просто да премахнете _id чрез извикване на page.pop('_id')

Можете също да използвате bson.json_util . Съдържа инструменти за конвертиране между BSON и JSON.

from flask import Response 
from bson import json_util

И след това заменете jsonify с нещо подобно на това:

return Response(
    json_util.dumps({'page' : make_public_page(page)}),
    mimetype='application/json'
)

Редактиране

Ако искате кратък и мръсен начин за справяне с проблема, можете да го направите по следния начин:

from bson import json_util, ObjectId
import json

#Lets create some dummy document to prove it will work
page = {'foo': ObjectId(), 'bar': [ObjectId(), ObjectId()]}

#Dump loaded BSON to valid JSON string and reload it as dict
page_sanitized = json.loads(json_util.dumps(page))


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Не може да се инициира набор от реплики в Ubuntu

  2. Изтегляне на MongoDB Java

  3. Грешка при свързване на NodeJS с mongoDB

  4. Грешка в Mongoose - няма метод "toObject" след надграждане

  5. Грешка в именуването на колекция Mongoose?