Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Serialización

En esta guía se puede aprender cómo utilizar PyMongo para serializar tipos personalizados.

La serialización es el proceso de mapear un objeto de Python a un documento BSON para su almacenamiento en MongoDB. PyMongo convierte automáticamente los tipos básicos de Python en BSON cuando insertas un documento en una colección. De manera similar, cuando recuperas un documento de una colección, PyMongo convierte automáticamente el BSON devuelto de nuevo en los tipos de Python correspondientes.

Para obtener una lista completa de asignaciones de Python a BSON, consulte Documentación de la API debson.

Para serializar y deserializar clases personalizadas de Python, debes implementar una lógica personalizada para gestionar la conversión. Las siguientes secciones muestran cómo serializar y deserializar clases personalizadas.

Para serializar una clase personalizada, debe convertirla en un diccionario. El siguiente ejemplo serializa una clase personalizada mediante el método vars() y luego inserta el objeto serializado en una colección. Seleccione el Synchronous o la pestaña Asynchronous para ver el código correspondiente:

class Restaurant:
def __init__(self, name, cuisine):
self.name = name
self.cuisine = cuisine
restaurant = Restaurant("Example Cafe", "Coffee")
restaurant_dict = vars(restaurant)
collection.insert_one(restaurant_dict)
class Restaurant:
def __init__(self, name, cuisine):
self.name = name
self.cuisine = cuisine
restaurant = Restaurant("Example Cafe", "Coffee")
restaurant_dict = vars(restaurant)
await collection.insert_one(restaurant_dict)

El ejemplo anterior serializa el objeto Restaurant en el siguiente diccionario:

{'name': 'Example Cafe', 'cuisine': 'Coffee'}

Para obtener más información sobre cómo insertar documentos en una colección, consulte la Guía deinserción de documentos.

Para deserializar una clase personalizada, hay que convertir el diccionario nuevamente en una instancia de la clase. El siguiente ejemplo recupera un documento de una colección y luego lo convierte nuevamente en un objeto Restaurant del ejemplo anterior. Selecciona la pestaña Synchronous o Asynchronous para ver el código correspondiente:

def deserialize_restaurant(doc):
return Restaurant(name=doc["name"], cuisine=doc["cuisine"])
restaurant_doc = collection.find_one({"name": "Example Cafe"})
restaurant = deserialize_restaurant(restaurant_doc)
def deserialize_restaurant(doc):
return Restaurant(name=doc["name"], cuisine=doc["cuisine"])
restaurant_doc = await collection.find_one({"name": "Example Cafe"})
restaurant = deserialize_restaurant(restaurant_doc)

Para obtener más información sobre cómo recuperar documentos de una colección, consulte la guía Buscar documentos.

Volver

JSON extendido

En esta página