Python 当字段为None(mongoengine)时,为布尔值和字符串字段传递什么默认值以成功进行DB比较
我的查询如下所示:Python 当字段为None(mongoengine)时,为布尔值和字符串字段传递什么默认值以成功进行DB比较,python,mongodb,orm,mongoengine,odm,Python,Mongodb,Orm,Mongoengine,Odm,我的查询如下所示: employee = Partner_employees.objects()\ .filter(id=user_id) \ .filter(earnings__gte=preconditions.earnings.gte) \ .filter(earnings__lte=preconditions.earnings.lte) \ .filter(work_rating__gte=p
employee = Partner_employees.objects()\
.filter(id=user_id) \
.filter(earnings__gte=preconditions.earnings.gte) \
.filter(earnings__lte=preconditions.earnings.lte) \
.filter(work_rating__gte=preconditions.credit_score) \
.filter(employment_status=preconditions.employment_status)
现在有一些计划在先决条件下有就业资格,有些则没有
例如:
先决条件下的就业状况
方案B:val(前提条件.就业状况)=True
不在先决条件下的就业状况
计划A:val(先决条件.就业状况)=无
用户信息:
userA:val(就业状况)=True
用户B:val(就业状态)=False
因此,我希望PlanA
的查询结果中包含userA
和userB
(此操作失败)
planB的查询结果中的userA
(这是有效的)这是MongoEngine的一个不幸方面。通常默认值不会显式写入DB(或者如果在某些记录存在后添加了默认值)。我看到一些选择:
将false记录显式设置为false并保存它们。那么查询应该可以工作了。这需要对数据库中已有的记录执行
查询False或None。您可以像这样使用或功能。这个答案涵盖了这一点,我认为:
例如,我认为它是这样的:
employee=Partner\u employees.objects()\
.filter(id=user\u id)\
.filter(earnings_ugte=前提条件.earnings.gte)\
.filter(earnings\uu lte=前提条件.earnings.lte)\
.filter(工作评分=先决条件。信用评分)\
.filter(Q(就业状态=False或Q(就业状态=无))
我不确定默认值的方向,但您始终可以这样做。我假设默认值为False:
query=…#同上,但不测试就业状况
如果前提条件.employment\u统计:
query=query.filter(就业状况=True)
其他:
query=query.filter(Q(就业状态=False或Q(就业状态=None))
返回query.first()
我想我在这个问题上有点不清楚,函数定义如下:''def find_credit_dcsn(用户id:str,前提条件:前提条件)->Partner_employees''问题是我想在查询Partner_employees.objects()时处理Premissions.employment_status=None的情况