sql >> Database >  >> NoSQL >> MongoDB

Mongo gebruiken met FLASK en python

Allereerst find_one retourneert één woordenboek of Geen als er geen overeenkomend element in de verzameling is. Dus ik denk dat page[0] is gelijk aan het verkrijgen van de waarde van het paginawoordenboek voor sleutel 0

Als geretourneerde documenten ObjectId . bevatten als _id je kunt niet zomaar jsonify gebruiken omdat, zoals ObjectId is niet JSON serialiseerbaar. Je kunt zoiets als dit gebruiken:

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

of je kunt eenvoudig _id . verwijderen door page.pop('_id') . te bellen

Je kunt ook bson.json_util gebruiken . Het bevat tools voor conversie tussen BSON en JSON.

from flask import Response 
from bson import json_util

En vervang dan jsonify met iets soortgelijks als dit:

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

Bewerken

Als je een korte en vuile manier wilt om met het probleem om te gaan, kun je het als volgt doen:

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. MongoDB Toon huidige gebruiker

  2. Hoe kan ik zien waar mongoDB gegevens opslaat? (het staat niet in de standaard /data/db!)

  3. Bestanden van Amazon S3 doorgeven via NodeJS-server zonder de S3-URL bloot te leggen?

  4. Chaining-belofte om een ​​referentiedocument in Mongoose bij te werken