From e9f3beab1c10b021cc3cbe9215e5cf714bdeda59 Mon Sep 17 00:00:00 2001 From: Kkartik14 Date: Sun, 11 Jan 2026 06:17:14 +0530 Subject: [PATCH] fix(mongodb): skip 40139REMOVE check for required fields to enable index usage --- .../connectors/mongodb-query-connector/src/filter.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/query-engine/connectors/mongodb-query-connector/src/filter.rs b/query-engine/connectors/mongodb-query-connector/src/filter.rs index 81c0301c016f..e676d299ad46 100644 --- a/query-engine/connectors/mongodb-query-connector/src/filter.rs +++ b/query-engine/connectors/mongodb-query-connector/src/filter.rs @@ -272,7 +272,10 @@ impl MongoFilterVisitor { ScalarCondition::NotSearch(_, _) => unimplemented!("Full-text search is not supported yet on MongoDB"), }; - let filter_doc = if !is_set_cond { + // Only add $$REMOVE check for optional fields. Required fields and _id cannot + // be missing by definition, and adding this check prevents MongoDB from using indexes. + // See: https://github.com/prisma/prisma/issues/29000 + let filter_doc = if !is_set_cond && !field.is_required() { exclude_undefineds(&field_name, self.invert_undefined_exclusion(), filter_doc) } else { filter_doc @@ -413,7 +416,10 @@ impl MongoFilterVisitor { )), }?; - let filter_doc = if !is_set_cond { + // Only add $$REMOVE check for optional fields. Required fields and _id cannot + // be missing by definition, and adding this check prevents MongoDB from using indexes. + // See: https://github.com/prisma/prisma/issues/29000 + let filter_doc = if !is_set_cond && !field.is_required() { exclude_undefineds(&field_name, self.invert_undefined_exclusion(), filter_doc) } else { filter_doc