Я запрашиваю 2 коллекции из mongodb. Я запрашиваю одну коллекцию, в которой есть поле с именем 'quiz_id'. Я хочу найти значение этого поля (например, первое значение quiz_id — «M7001»). Во второй коллекции я хочу найти значение 'quiz_id' (это оценка викторины, взятая от 0 до 10) из первого запроса, который является ключом, и вернуть значение. Вот что у меня есть:
quizzes = Topic_maths.objects.order_by('quiz_id')
quiz_chk = User.objects.filter(username=current_user)
for quiz_id in quizzes:
print (quiz_id.quiz_id)
key = quiz_id.quiz_id
if key in quiz_chk:
print ("score: ", key.quiz_id)
else:
print ("no score")
Таким образом, первая часть «print (quiz_id.quiz_id)» печатает каждый из номеров идентификаторов викторины в порядке. но я не могу понять, как искать ключ в наборе запросов монго. Для информации:
print (quiz_id.quiz_id)
<class 'flask_mongoengine.BaseQuerySet'>
Любая помощь будет принята с благодарностью, спасибо
quiz_chk
требует дополнительной итерации:
[q['quiz_id'] for q in quiz_chk]
что сделало бы весь код таким:
from mongoengine import *
connect('test')
class TopicMaths(Document):
quiz_id = StringField()
class User(Document):
username = StringField()
quiz_id = StringField()
current_user = 'Bob'
quizzes = TopicMaths.objects.order_by('quiz_id')
quiz_chk = User.objects.filter(username=current_user)
for quiz_id in quizzes:
print(quiz_id.quiz_id)
key = quiz_id.quiz_id
if key in [q['quiz_id'] for q in quiz_chk]:
print("score: ", key)
else:
print("no score")
Выход:
M7001
no score
M7002
score: M7002
M7003
no score