MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Używanie mongo z FLASK i pytonem

Przede wszystkim find_one zwróci pojedynczy słownik lub None, jeśli w kolekcji nie ma pasującego elementu. Myślę więc, że page[0] jest równoważne pobraniu wartości słownika strony dla klucza 0

Jeśli zwracane dokumenty zawierają ObjectId jako _id nie możesz po prostu użyć jsonify ponieważ, jak ObjectId nie nadaje się do serializacji JSON. Możesz użyć czegoś takiego:

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

lub możesz po prostu usunąć _id dzwoniąc na page.pop('_id')

Możesz także użyć bson.json_util . Zawiera narzędzia do konwersji między BSON a JSON.

from flask import Response 
from bson import json_util

A następnie zastąp jsonify z czymś podobnym do tego:

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

Edytuj

Jeśli potrzebujesz krótkiego i brudnego sposobu radzenia sobie z problemem, możesz to zrobić w ten sposób:

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. Znajdź pierwszy element w zagnieżdżonej tablicy, który pasuje do warunków

  2. Kiedy MongoDB wstawia datę, konwertuje ją na UTC

  3. Jak usunąć element z obiektu JSON przy użyciu nodeJS?

  4. Limit rozmiaru pojedynczego dokumentu MongoDB wynosi 16 MB

  5. Aktualizujesz wiele poddokumentów za pośrednictwem Mongoose?