最大限度地减少mongoengine的执行时间

时间:2012-10-15 05:35:04

标签: python mongoengine

我有一个名为login的文件。该文件包含以下内容:

  • 用户名

  • 密码

  • 性别

我有另一个名为history的文件,其中包含以下内容:

  • 用户名

  • 时间

我在username文档中引用了login的历史记录文档。 使用time字段,我将使用以下查询从历史记录文档中获取详细信息。

usersByHistory=models.history.objects(time=searchObj.time) 

使用上面的结果我将使用以下代码获取用户的信息:

list=[]    
for user in usersByHistory :
   name = user.user_name.user_name
   usersList = login_info.objects(user_name=name)
   list.append(usersList)

通过执行上面的代码,执行时间非常长,我想在代码中避免这种for循环,并用mongoengine查询替换它,以便最小化执行时间。有人请帮忙

1 个答案:

答案 0 :(得分:2)

您可以执行in查询并提供用户数组:http://docs.mongoengine.org/en/latest/guide/querying.html#query-operators

下面是使用scalar的示例,因为我们只需要一个user_names列表。

users_by_history = History.objects(time=searchObj.time).scalar('user_name')
LoginInfo.objects(user_name__in=users_by_history)

*我更新了类名和变量名以符合pep8