diff --git a/beanie/odm/interfaces/find.py b/beanie/odm/interfaces/find.py index 516ba7962..21b38602b 100644 --- a/beanie/odm/interfaces/find.py +++ b/beanie/odm/interfaces/find.py @@ -434,14 +434,11 @@ async def count(cls) -> int: @classmethod def _add_class_id_filter(cls, args: Tuple, with_children: bool = False): + settings = cls.get_settings() + class_id = settings.class_id + # skip if _class_id is already added - if any( - ( - True - for a in args - if isinstance(a, Iterable) and cls.get_settings().class_id in a - ) - ): + if any(isinstance(a, Iterable) and class_id in a for a in args): return args if ( @@ -449,21 +446,17 @@ def _add_class_id_filter(cls, args: Tuple, with_children: bool = False): and cls._inheritance_inited ): if not with_children: - args += ({cls.get_settings().class_id: cls._class_id},) + args += ({class_id: cls._class_id},) else: args += ( { - cls.get_settings().class_id: { + class_id: { "$in": [cls._class_id] - + [cname for cname in cls._children.keys()] + + [cname for cname in cls._children] } }, ) - if cls.get_settings().union_doc: - args += ( - { - cls.get_settings().class_id: cls.get_settings().union_doc_alias - }, - ) + if settings.union_doc: + args += ({class_id: settings.union_doc_alias},) return args