2012-10-15 53 views
0

我有一个名为login的文档。该文件包含以下内容:最小化mongoengine中的执行时间

  • 用户名

  • 密码

  • 性别

我还有一个文件名为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) 

通过执行上面的代码的执行时间是非常高的,我想避免这种情况在循环代码并将其替换为mongoengine查询以最大限度地减少执行时间。有人请帮助

回答

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

+0

我如何使用马代码先生'in'查询? –

+0

更新了示例。 – Ross