【问题标题】:Efficiently retrieve data (all in one batch ideally) with mongengine in Python 3在 Python 3 中使用 mongengine 有效地检索数据(理想情况下全部在一批中)
【发布时间】:2016-09-05 15:01:50
【问题描述】:

假设我有继承自 Document 类的 User 类(我使用的是 Mongoengine)。现在,我想检索在某个时间戳之后注册的所有用户。这是我正在使用的方法:

def get_users(cls, start_timestamp):
    return cls.objects(ts__gte=start_timestamp)

3 秒内返回 1000 个文档。这是非常缓慢的。我在几毫秒内用 SQL 完成了类似的查询。总的来说,我是 MongoDB 和 No-SQL 的新手,所以我想我做错了什么。

我怀疑检索速度很慢,因为它是分几批完成的。我在某处读到 PyMongo 的批量大小为 101,但我不知道 Mongoengine 是否相同。

我可以更改批量大小,以便一次获取所有文档。我将知道总共将检索多少数据。

非常欢迎任何其他建议。

谢谢!

【问题讨论】:

    标签: python mongodb mongoengine


    【解决方案1】:

    正如您所建议的那样,运行此查询不可能需要 3 秒。但是,问题不在于 pymongo 驱动程序的性能,需要考虑一些事项:

    【讨论】:

    • 我已经使用 pymongo 的直接接口提高了性能。速度从 3 秒提高到 300 毫秒,真是令人惊讶。我在问题的代码 sn-p 中使用 Mongoengine 的方式有什么问题吗?如果我需要编写 pymongo,我认为使用 Mongoengine 没有任何价值。
    • This answer 可能是问题的一部分。
    • 感谢您的精彩回答!
    猜你喜欢
    • 2020-12-09
    • 2015-10-08
    • 1970-01-01
    • 2015-06-19
    • 2019-06-13
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多