我有一個包含多個課程檔案的集合。在它上面,我有一個 course_users 陣列,如下例所示:

像這樣,我可以在同一個集合中有多個課程。
我的目的是使用任何給定的用戶 ID 做某事,但首先,我需要知道該用戶是否存在于集合的任何課程中,例如,如果 ID 為 123 的用戶在課程 A 或課程 B 上,我應該回傳 True。如果 ID 為 456 的用戶不在任何課程上,我應該回傳 False。
有沒有辦法在燒瓶中使用 mongoengine 以盡可能少的步驟進行此查詢?
我的想法是使用 $ 運算子,如下所示:
def userIsInCourse(user_id):
course_students = Course.objects(students__S__in=[user_id])
print(course_students)
認為 Course.objects 將檢索用 students__S__in=user_id_ 過濾的每門課程,但我失敗了。
很抱歉這個模糊的問題。
uj5u.com熱心網友回復:
我最終修改了我的查詢。我沒有嘗試使用 $ 運算子,而是修改了查詢以使用原始查詢:
def userIsInCourse(user_id):
course_students = Course.objects(__raw__={'students': {'$elemMatch': {'student_id': user_id}}})
if course_students:
return True
else:
return False
它檢索整個 Courses 陣列,并查看每個 Course 的學生物件陣列,然后使用給定用戶的 id 進行過濾。如果用戶存在于課程中,則回傳 true。
使用這種方法,它比我想象的要簡單。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517782.html
標籤:Pythonmongodb烧瓶蒙哥引擎烧瓶-mongoengine
