0

というドキュメントがあります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 クエリに置き換えたいと考えています。誰か助けてください

4

1 に答える 1

2

inクエリを実行して、ユーザーの配列を提供できます: http://docs.mongoengine.org/en/latest/guide/querying.html#query-operators

scalaruser_names のリストのみが必要なため、使用例を次に示します。

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

※クラス名、変数名はpep8準拠に更新しました

于 2012-10-15T06:11:02.117 に答える