You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:10:23