我在俾蒙古语中试着订购字典。我读过可以用bson.son.son来完成。文档Here
然而,我似乎不能让它工作。谷歌没有太多关于它的信息。有一些关于首先配置pymongo的讨论,告诉它使用子对象,但没有示例。一个朋友建议你在做搜索时传递参数。他不记得了。
我可以创建子对象。但当他们被插入数据库,然后又出来时,他们只是简单的听写。
我不确定该给你什么样的代码示例,因为我真的不知道从哪里开始。下面的代码段在每次添加新用户时都创建一个空的子对象。“sub-users”对象也是用son创建的。当我从数据库读取帐户文档时,它们只是普通的python指令。

    account['sub_users'][sub_user_name] = bson.SON()
    with mongo_manager.Collection(CFG.db, 'Users') as users:
        users.save(account)

可能是一个过去的参数像这样的查找来配置?这是我朋友的建议,但他不记得了。
with mongo_manager.Collection(CFG.db, 'Users') as users:
    account = users.find_one({'_id': _id, 'DOC':'OrderedDict})

有什么想法吗?

最佳答案

您可以使用bson.son.SONOrderedDict来存储有序的dict。
并使用as_class=OrderedDict选项检索数据。
下面是一个例子:

from collections import OrderedDict
from pymongo import MongoClient
import bson

client = MongoClient()
sample_db = client['sample']
test_col = sample_db['test']

test_col.drop()

data = OrderedDict([("one", 1), ("two", 2), ("three", 3), ("four", 4)])
test_col.insert(data)
print(list(test_col.find({}, {'_id': 0}, as_class=OrderedDict)))

test_col.drop()

data = bson.son.SON([("one", 1), ("two", 2), ("three", 3), ("four", 4)])
test_col.insert(data)
print(list(test_col.find({}, {'_id': 0}, as_class=OrderedDict)))

输出:
[OrderedDict([(u'one', 1), (u'two', 2), (u'three', 3), (u'four', 4)])]
[OrderedDict([(u'one', 1), (u'two', 2), (u'three', 3), (u'four', 4)])]

关于python - 如何在pymongo获得有序的词典?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23001156/

10-11 06:45