sql >> Databasteknik >  >> NoSQL >> MongoDB

Använder mongo med FLASK och python

Först och främst find_one returnerar enstaka ordbok eller Ingen om det inte finns något matchande element i samlingen. Så jag tror att page[0] motsvarar att få värdet av sidordbok för nyckel 0

Om returnerade dokument innehåller ObjectId som _id du kan inte bara använda jsonify eftersom, som ObjectId kan inte serialiseras med JSON. Du kan använda något sånt här:

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

eller så kan du helt enkelt ta bort _id genom att anropa page.pop('_id')

Du kan också använda bson.json_util . Den innehåller verktyg för konvertering mellan BSON och JSON.

from flask import Response 
from bson import json_util

Och ersätt sedan jsonify med något liknande detta:

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

Redigera

Om du vill ha ett kort och smutsigt sätt att hantera problemet kan du göra det så här:

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. Vad är den maximala storleken för GridFS på MongoDB?

  2. När du säkrar ett kommentarformulär och relaterad API-slutpunkt, ska indata saneras, valideras och kodas i webbläsare, server eller båda?

  3. MongoDB Compass Filter uttryck till Go bson.M uttryck

  4. junit testfall med embed mongodb de.flapdoodle.embed.mongo