我有一个名为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查询替换它,以便最小化执行时间。有人请帮忙
答案 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