diff --git a/packages/core/src/query.ts b/packages/core/src/query.ts index ae0824e5df..9688c4b88f 100644 --- a/packages/core/src/query.ts +++ b/packages/core/src/query.ts @@ -156,7 +156,11 @@ export function matchQuery ( hierarchy: Hierarchy, skipLookup: boolean = false ): Doc[] { - let result = docs + const baseClass = hierarchy.getBaseClass(clazz) + let result = docs.filter((r) => hierarchy.isDerived(r._class, baseClass)) + if (baseClass !== clazz) { + result = docs.filter((r) => hierarchy.hasMixin(r, clazz)) + } for (const key in query) { if (skipLookup && key.startsWith('$lookup.')) { continue