Non esiste un modo per memorizzare un oggetto in un file (database) senza serializzarlo. Se i dati devono passare da un processo a un altro processo o verso un altro server, sarà necessario serializzarli in qualche modo per essere trasmessi. Dato che stai chiedendo informazioni su MongoDB, i dati saranno assolutamente serializzati in qualche modo per poter essere memorizzati nel database MongoDB. Quando usi MongoDB, è BSON.
Se in realtà stai chiedendo se ci sarebbe un modo per memorizzare una forma più grezza di un oggetto Python in un documento MongoDB, puoi inserire un campo Binary
in un documento che può contenere tutti i dati che desideri . Non è direttamente interrogabile in alcun modo in quella forma, quindi stai potenzialmente perdendo molti dei benefici dell'utilizzo di un database di documenti NoSQL come MongoDB.
>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)
>>> db = client['test-database']
>>> coll = db.test_collection
>>> # the collection is ready now
>>> from bson.binary import Binary
>>> import pickle
>>> # create a sample object
>>> myObj = {}
>>> myObj['demo'] = 'Some demo data'
>>> # convert it to the raw bytes
>>> thebytes = pickle.dumps(myObj)
>>> coll.insert({'bin-data': Binary(thebytes)})
Non è affatto chiaro cosa stai cercando di fare, cosa hai provato e cosa non ha funzionato. Si prega di modificare la domanda per includere quei dettagli utili. :) – WiredPrairie
Se lo stai facendo per le prestazioni, [questo benchmark] (http://kovshenin.com/2010/pickle-vs-json-which-is-faster/) potrebbe sorprendervi. – georg
@ thg435: Grazie per il collegamento, lo terrò a mente per un progetto in cui I/O sarebbe più critico per le prestazioni del mio progetto! – chiffa