【发布时间】:2020-10-26 15:35:26
【问题描述】:
我有一个 Web 应用程序,我在 Mongo 中存储了一些数据,我需要从查找或聚合管道返回分页响应。我使用 Django Rest Framework 和它的分页,它最终只是分割了 Cursor 对象。这对游标无缝工作,但聚合返回 CommandCursor,它没有实现 __getitem__()。
cursor = collection.find({})
cursor[10:20] # works, no problem
command_cursor = collection.aggregate([{'$match': {}}])
command_cursor[10:20] # throws not subscriptable error
这背后的原因是什么?有人有CommandCursor.__getitem__() 的实现吗?真的可行吗?
当我只需要一个页面时,我想找到一种不获取所有值的方法。对于大型(100k+ 文档)管道结果,转换为列表然后对其进行切片是不可行的。有一个基于this answer 的解决方法,但这仅适用于前几页,并且最后页面的性能迅速下降。
【问题讨论】: