当前位置: 首页 > 面试题库 >

如何在pymongo中获得有序词典?

狄誉
2023-03-14
问题内容

我正在尝试在Pymongo中订购字典。我读过可以用bson.son.Son完成。文件在这里

但是,我似乎无法使其工作。谷歌上没有太多关于它的信息。关于首先配置pymongo以便告诉它使用SON对象有一些讨论,但没有示例。一位朋友建议您在查找时传递一个参数。他不记得了。

我可以创建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)

也许对这样的配置已经过去了?这是我朋友的建议,但他不记得了。

with mongo_manager.Collection(CFG.db, 'Users') as users:                                 
    account = users.find_one({'_id': _id, 'DOC':'OrderedDict})

有任何想法吗?


问题答案:

您可以使用bson.son.SONOrderedDict存储订购的字典。

并使用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)])]


 类似资料:
  • 我正在尝试编写我的第一个Elasticsearch分析插件,我从github中找到了一个可扩展的标准Analyzer插件项目:Elasticsearch分析standardext,在该项目中它提供了以下代码: 这里是链接 我想知道如何获得这些单词边界的字符类。 我问有问题的作者:如何获得单词边界“字符类”?#2,但是作者似乎不会回答我的问题。 我尝试阅读Unicode文本分段文档:https://

  • 问题内容: 我在查询mongoDB时尝试使用排序功能,但是失败了。相同的查询在MongoDB控制台中有效,但不适用于此处。代码如下: 我得到的错误如下: 我在其他地方找到了一个链接,该链接说如果使用pymongo,则需要在密钥的前面放置一个“ u”,但这也不起作用。任何其他人都可以使用它或这是一个错误。 问题答案: 在pymongo中,采用和作为参数。 因此,假设您要排序,那么您应该 对于多个字段

  • 我是新来的,我想要得到一个文本文件的单词列表和单词数。这是我尝试过的代码: 输出:century Cepheus CEQ陶瓷Cerberus谷类小脑错误文件字数:0

  • 问题内容: 最好在不使用占用大量内存的NLP框架的情况下,获取动词过去式的最有效方法是什么? 例如 住:住 尝试:尝试 轻按至:轻按 煮到煮 卖给:卖给 我自己写了一些快速的东西(堆栈溢出不会让我自己回答),这似乎适用于常规动词(例如该列表的前4个),但不适用于不规则动词: http //pastebin.com/Txh76Dnb 编辑:感谢所有的答复,由于动词不规则,似乎没有字典就无法正确完成。

  • 问题内容: 文字为: 我只想得到 我试过了 : 但这给了我: 问题答案: 正则表达式是不必要的。只需使用或即可。

  • 我正试图从一张有超时的地图中得到所有的结果。 我尝试使用,但由于使用了函数,没有成功。 我会很高兴,如果有人可以看看哦,我的代码,并建议如何做正确的。 非常感谢。