在 Flask 中的 HTTP 请求之间保存 MongoDB 光标

Saving MongoDB cursor between HTTP requests in Flask

我正在编写一个网络应用程序来使用 pymongo(常规 pymongo)和 flask 显示来自 MongoDB 数据库的推文。

我遇到的问题是,当访问分页结果时,搜索一次又一次地执行,而我真正需要做的只是遍历光标。

Page 1: db.tweets.find({...})[0:20]
Page 2: db.tweets.find({...})[21:30]
Page 3: db.tweets.find({...})[31:40]

每次我更改页面时都会调用调用 db.tweets.find({...}) ,理想情况下我想做一次 db.tweets.find({...}) 并存储它放入一个名为 cursor 的变量中,然后切片:

cursor = db.tweets.find({...})
Page 1: cursor[0:20]
Page 2: cursor[21:30], etc...

我考虑过使用会话,但游标不是 json 可序列化的,我无法将所有内容都存储在内存中。我想知道是否有人知道如何在 http 请求之间 store/persist 游标,这样我就不必每次都计算它,或者可能是另一种分页方法?

我确实计划让这个 webapp 有多个并发用户,所以全局存储它可能不是一个好主意。

您可以对结果进行排序,然后跳过

我的片段:

db.tweets.find().sort(("name", pymongo.ASCENDING)).limit(20).skip(20)

                                 or
#For Twenty pages to get twenty different tweets for each page
n=20
for i in range 10:
    db.tweets.find().sort(("name", pymongo.ASCENDING)).limit(20).skip((n*i))