diff --git a/pymongo/aggregation.py b/pymongo/aggregation.py index e190fefc5..84ecffe5f 100644 --- a/pymongo/aggregation.py +++ b/pymongo/aggregation.py @@ -55,7 +55,7 @@ class _AggregationCommand(object): self._performs_write = True common.validate_is_mapping("options", options) - if let: + if let is not None: common.validate_is_mapping("let", let) options["let"] = let if comment is not None: diff --git a/pymongo/collection.py b/pymongo/collection.py index 8de1fbeea..65bd1c54e 100644 --- a/pymongo/collection.py +++ b/pymongo/collection.py @@ -728,7 +728,7 @@ class Collection(common.BaseObject, Generic[_DocumentType]): hint = helpers._index_document(hint) update_doc["hint"] = hint command = SON([("update", self.name), ("ordered", ordered), ("updates", [update_doc])]) - if let: + if let is not None: common.validate_is_mapping("let", let) command["let"] = let if not write_concern.is_server_default: @@ -893,7 +893,7 @@ class Collection(common.BaseObject, Generic[_DocumentType]): """ common.validate_is_mapping("filter", filter) common.validate_ok_for_replace(replacement) - if let: + if let is not None: common.validate_is_mapping("let", let) write_concern = self._write_concern_for(session) return UpdateResult( @@ -1189,7 +1189,7 @@ class Collection(common.BaseObject, Generic[_DocumentType]): if not write_concern.is_server_default: command["writeConcern"] = write_concern.document - if let: + if let is not None: common.validate_is_document_type("let", let) command["let"] = let @@ -2728,7 +2728,7 @@ class Collection(common.BaseObject, Generic[_DocumentType]): ) collation = validate_collation_or_none(kwargs.pop("collation", None)) cmd = SON([("findAndModify", self.__name), ("query", filter), ("new", return_document)]) - if let: + if let is not None: common.validate_is_mapping("let", let) cmd["let"] = let cmd.update(kwargs) diff --git a/pymongo/cursor.py b/pymongo/cursor.py index 02f1905df..a2ccdf586 100644 --- a/pymongo/cursor.py +++ b/pymongo/cursor.py @@ -248,7 +248,7 @@ class Cursor(Generic[_DocumentType]): if projection is not None: projection = helpers._fields_list_to_dict(projection, "projection") - if let: + if let is not None: validate_is_document_type("let", let) self.__let = let diff --git a/test/test_collection.py b/test/test_collection.py index d9f51f530..47636b495 100644 --- a/test/test_collection.py +++ b/test/test_collection.py @@ -2123,7 +2123,7 @@ class TestCollection(IntegrationTest): (c.find_one_and_replace, ({}, {})), (c.aggregate, ([], {})), ] - for let in [10, "str"]: + for let in [10, "str", [], False]: for helper, args in helpers: with self.assertRaisesRegex(TypeError, "let must be an instance of dict"): helper(*args, let=let) # type: ignore