使用Motor查询视图内的多个文档

时间:2015-05-30 13:30:08

标签: python mongodb tornado tornado-motor

latest doc中的Motor教程展示了如何通过tornado.gen.couroutine获取多个文档:

@tornado.gen.coroutine
def do_find():
    cursor = db.test_collection.find({'i': {'$lt': 5}})
    for document in (yield cursor.to_list(length=100)):
        print document

然后同步演示输出:

IOLoop.current().run_sync(do_find)

如何更改此功能以便我可以在异步handler内调用它并获取文档列表?

1 个答案:

答案 0 :(得分:0)

像这样:

class AdminHandler(tornado.web.RequestHandler):
  @tornado.gen.coroutine
  def get_users(self):
    cursor = self.mc.web_app.user.find()
    users = [user['email'] for user in (yield cursor.to_list(length=1000))]
    raise tornado.gen.Return(users)

  @tornado.gen.coroutine
  def get(self):
    self.xsrf_token
    users = yield self.get_users()
    self.render('main/index.html', users=users)