如何用Flask与MongoEngine判断用户ID是否在课程集合的用户数组中
判断用户是否存在于任意课程的用户数组中
我有一个包含多个Course文档的集合,每个文档中存在一个course_users数组,集合内可包含多门课程。我的需求是针对给定的用户ID,判断该用户是否存在于集合内任意一门课程的用户数组中:例如ID为123的用户若在课程A或课程B中,应返回True;ID为456的用户若不在任何课程中,应返回False。请问能否使用MongoEngine在Flask中通过最少步骤实现该查询?
我尝试使用$操作符编写了如下代码,但未成功:
def userIsInCourse(user_id): course_students = Course.objects(students__S__in=[user_id]) print(course_students)
解决方案
你可以通过以下简洁高效的方式实现需求:
- 修正查询条件:MongoEngine中匹配数组包含指定元素,直接用
course_users=user_id即可(或course_users__in=[user_id],两者效果一致,前者更简洁),无需错误的__S__in语法。 - 使用
exists()方法:该方法直接返回布尔值,判断是否存在匹配文档,无需返回整个结果集,性能更优。
正确代码如下:
def userIsInCourse(user_id): return Course.objects(course_users=user_id).exists()
这个函数会直接返回True或False,完全满足你判断用户是否在任意课程用户数组中的需求。
内容的提问来源于stack exchange,提问作者Miguel V
相关产品推荐
相关产品推荐

