我正在尝试在Pymongo中获取有序字典。据我所知,可以使用bson.son.Son实现。文档在这里。
然而,我似乎无法使其正常工作。谷歌上关于此的信息不多。有一些讨论要先配置pymongo以告诉它使用SON对象,但没有示例。一个朋友建议在find时传递参数,但他记不起来了。
我能够创建SON对象。但当它们被插入数据库,再取出时,它们只是普通的字典。
我真的不知道从哪里开始,也不确定应该给你什么代码示例。下面的片段每次添加新用户时都会创建一个空的SON对象。'sub_users'对象也是用SON创建的。但当我从数据库中读取帐户文档时,它们只是普通的Python字典。
account['sub_users'][sub_user_name] = bson.SON()
with mongo_manager.Collection(CFG.db, 'Users') as users:
users.save(account)
或许可以通过像这样的参数传递给 find 来进行配置?这是我的朋友建议的,但他记不清了。
with mongo_manager.Collection(CFG.db, 'Users') as users:
account = users.find_one({'_id': _id, 'DOC':'OrderedDict})
有什么想法吗?
OrderedDict
和SON
对象是否会影响性能?从源代码来看(这里和这里),两者都是dict
的子类,但是OrderedDict
有一个C实现(并带有一个纯Python实现作为后备),而SON
似乎只有一个Python实现... - Gustavo Bezerra