Tools for creating and manipulating SON, the Serialized Ocument Notation.
Regular dictionaries can be used instead of SON objects, but not when the order of keys is important. A SON object can be used just like a normal Python dictionary.
bson.son.
SON
(data=None, **kwargs)SON data.
A subclass of dict that maintains ordering of keys and provides a few extra niceties for dealing with SON. SON objects can be converted to and from BSON.
The mapping from Python types to BSON types is as follows:
Python Type |
BSON Type |
Supported Direction |
---|---|---|
None |
null |
both |
bool |
boolean |
both |
int |
int32 / int64 |
py -> bson |
long |
int64 |
py -> bson |
bson.int64.Int64 |
int64 |
both |
float |
number (real) |
both |
string |
string |
py -> bson |
unicode |
string |
both |
list |
array |
both |
dict / SON |
object |
both |
datetime.datetime |
date |
both |
bson.regex.Regex |
regex |
both |
compiled re |
regex |
py -> bson |
bson.binary.Binary |
binary |
both |
bson.objectid.ObjectId |
oid |
both |
bson.dbref.DBRef |
dbref |
both |
None |
undefined |
bson -> py |
unicode |
code |
bson -> py |
bson.code.Code |
code |
py -> bson |
unicode |
symbol |
bson -> py |
bytes (Python 3) |
binary |
both |
Note that to save binary data it must be wrapped as an instance of bson.binary.Binary. Otherwise it will be saved as a BSON string and retrieved as unicode.
to_dict
()Convert a SON document to a normal Python dictionary instance.
This is trickier than just dict(…) because it needs to be recursive.