我有一个使用继承创建的嵌入式文档列表。因此,由于继承,某些字段可能不存在于所有嵌入式文档中。我尝试了以下方法:
案例1:缓慢(运行时间= 2.1s)
forms = db.Form.objects()
for form in forms:
for element in form.elements:
if hasattr(element, 'parameter'):
if element.parameter == parameter:
print(form)
案例2:快速(运行时间= 0.00014s)
forms = db.Form.objects(elements__match={ 'parameter': parameter })
情况3:不起作用!
forms = db.Form.objects(elements__parameter == parameter)
NameError: name 'elements__parameter' is not defined
我认为情况2和情况3是相同的,但是,__parameter
似乎不知道如何处理使用继承且不具有“参数”字段的嵌入式文档。这是错误还是我做错了什么?