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

Querying for more than one document inside of view with 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 中调用它并获取文档列表?

像这样:

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)