让我们说我的类User继承自Document类(我正在使用Mongoengine)。现在,我想检索一些时间戳后注册的所有用户。这是我正在使用的方法:
def get_users(cls, start_timestamp):
return cls.objects(ts__gte=start_timestamp)
在3秒内返回1000份文件。这非常慢。我在几秒内在SQL中完成了类似的查询。我是MongoDB和No-SQL的新手,所以我想我做的事情非常糟糕。
我怀疑检索速度很慢,因为它是分批完成的。我在某地读到,对于PyMongo,批量大小为101,但我不知道Mongoengine是否相同。
我可以更改批量大小,这样我就可以立即获取所有文件。我将大致知道将检索多少数据。
非常欢迎任何其他建议。
谢谢!
答案 0 :(得分:3)
正如您所建议的那样,运行此查询无需花费3秒钟。然而,问题不在于pymongo驱动程序的性能,有些事情需要考虑:
ts
字段包含在用户集合的indexes中ReferenceField
,那么每个文档都会产生其他查询。 There are ways to avoid this.