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

时间:2015-05-25 23:49:41

标签: mongodb python-2.7 flask pymongo

我正在编写一个webapp,使用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,然后是slice:

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

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

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

1 个答案:

答案 0 :(得分:0)

您可以对结果进行排序并随时跳过

我的摘要:

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))