sql >> Databáze >  >> NoSQL >> MongoDB

Použití mongo s FLASK a python

Nejprve find_one vrátí jeden slovník nebo Žádný, pokud v kolekci není žádný odpovídající prvek. Takže si myslím, že page[0] je ekvivalentní získání hodnoty stránkového slovníku pro klíč 0

Pokud vrácené dokumenty obsahují ObjectId jako _id nemůžete jednoduše použít jsonify protože jako ObjectId není možné serializovat JSON. Můžete použít něco takového:

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

nebo můžete jednoduše odstranit _id voláním page.pop('_id')

Můžete také použít bson.json_util . Obsahuje nástroje pro převod mezi BSON a JSON.

from flask import Response 
from bson import json_util

A pak nahraďte jsonify s něčím podobným:

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

Upravit

Pokud chcete krátký a špinavý způsob řešení problému, můžete to udělat takto:

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. Použijte mongoexport s --query pro ISODate

  2. mongodb najít porovnáním hodnot polí

  3. Java Future - Spring Authentication je v AuditorAware nulová

  4. Časová složitost zadd, když hodnota má skóre vyšší než nejvyšší skóre přítomné v cílové tříděné sadě