【发布时间】:2018-10-30 09:38:37
【问题描述】:
我有一个我正在尝试分页的对象的光标。我想要的项目总数是 25,但是使用 Django 进行分页的方式需要 whole 光标。在私测中,大概是因为我家的盒子有更多的RAM之类的,我没有这些问题。但是,当推送到只有 2GB 内存的生产机器时,我得到了 MemoryError,可能是因为光标太大。
我可以使用 .limit(25) 和 .skip() 来一次只检索 25 个东西,但是为了让分页工作,我需要对象的总数。不幸的是,.count() 似乎需要获取光标的全部数据。理想情况下,如果我能以某种方式获得查找的大小并且光标中只有 25 个实际对象,我就可以完成这项工作。
所以我想问题是,有没有办法不通过 .count() (获取整个游标的数据)来获取游标的大小。
lookup = players.find({field: {'$exists': True}}).sort(field, DESCENDING)
//This returns a MemoryError
lookup = players.find({field: {'$exists': True}}).limit(25).skip(25).sort(field, DESCENDING)
//This does NOT return a Memory Error. However, when I do the following:
lookup.count()
//This also has a MemoryError.
为了澄清,我使用的是 Django 1.5.11 和 pymongo 3.2.1。
【问题讨论】:
标签: python django mongodb pymongo