sql >> Database teknologi >  >> NoSQL >> MongoDB

Brug af mongo med FLASK og python

Først og fremmest find_one vil returnere enkelt ordbog eller Ingen, hvis der ikke er noget matchende element i samlingen. Så jeg tror, ​​at page[0] svarer til at få værdien af ​​sideordbog for nøglen 0

Hvis returnerede dokumenter indeholder ObjectId som _id du kan ikke bare bruge jsonify fordi, ligesom ObjectId kan ikke serialiseres med JSON. Du kan bruge noget som dette:

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

eller du kan simpelthen fjerne _id ved at kalde page.pop('_id')

Du kan også bruge bson.json_util . Den indeholder værktøjer til konvertering mellem BSON og JSON.

from flask import Response 
from bson import json_util

Og erstat derefter jsonify med noget lignende dette:

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

Rediger

Hvis du vil have en kort og beskidt måde at håndtere problemet på, kan du gøre det sådan her:

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. Ved at bruge MongoDB som vores masterdatabase, skal jeg så bruge en separat grafdatabase til at implementere relationer mellem enheder?

  2. Hent dokumenter med indlejrede objekter, der matcher antallet af betingelser

  3. Hvordan kan jeg love den oprindelige MongoDB Javascript-driver ved hjælp af bluebird?

  4. Hvordan returnerer man kun den første forekomst af et ID med Mongoose?