
OPERATIONAL DEFECT DATABASE
...

...
Find command $where no longer respects the scope in CodeWithScope. For example, on 4.2: >>> db.test.insert_many([{"x": i} for i in range(10)]) >>> len(list(db.test.find().where('this.x < 3'))) 3 >>> len(list(db.test.find().where(Code('this.x < i', {'i':3})))) 3 On v4.3.3-387-g46ee960: >>> db.test.insert_many([{"x": i} for i in range(10)]) >>> len(list(db.test.find().where('this.x < 3'))) 3 >>> len(list(db.test.find().where(Code('this.x < i', {'i':3})))) Traceback (most recent call last): File "", line 1, in File "/Users/shane/git/mongo-python-driver/pymongo/cursor.py", line 1156, in next if len(self.__data) or self._refresh(): File "/Users/shane/git/mongo-python-driver/pymongo/cursor.py", line 1073, in _refresh self.__send_message(q) File "/Users/shane/git/mongo-python-driver/pymongo/cursor.py", line 953, in __send_message response = client._run_operation_with_response( File "/Users/shane/git/mongo-python-driver/pymongo/mongo_client.py", line 1342, in _run_operation_with_response return self._retryable_read( File "/Users/shane/git/mongo-python-driver/pymongo/mongo_client.py", line 1464, in _retryable_read return func(session, server, sock_info, slave_ok) File "/Users/shane/git/mongo-python-driver/pymongo/mongo_client.py", line 1334, in _cmd return server.run_operation_with_response( File "/Users/shane/git/mongo-python-driver/pymongo/server.py", line 136, in run_operation_with_response _check_command_response(first) File "/Users/shane/git/mongo-python-driver/pymongo/helpers.py", line 161, in _check_command_response raise OperationFailure(msg % errmsg, code, response) pymongo.errors.OperationFailure: ReferenceError: i is not defined : @:1:15 Could this be caused by SERVER-45454 or SERVER-46098?
james.wahlin@10gen.com commented on Fri, 28 Feb 2020 20:55:15 +0000: Closing as a duplicate of SERVER-46492 which will add better messaging for $where rejection of CodeWithScope.. james.wahlin@10gen.com commented on Wed, 19 Feb 2020 21:59:24 +0000: shane.harvey I reopened this ticket and repurposed it towards improving the error message. shane.harvey commented on Wed, 19 Feb 2020 19:57:09 +0000: Given that this is the expected behavior can we change the server to return an informative error when given a CodeWithScope? Like "CodeWithScope is no longer supported" or something? carl.champain commented on Wed, 19 Feb 2020 14:58:49 +0000: I'm closing this ticket since this change was intentional (SERVER-45454). james.wahlin@10gen.com commented on Wed, 19 Feb 2020 14:12:56 +0000: This change is intentional and was made under SERVER-45454. CodeWithScope support has been removed for both $where and the mapReduce command for MongoDB 4.4. Additionally, CodeWithScope will be deprecated as a BSON type under SERVER-45460 for 4.4.
Click on a version to see all relevant bugs
MongoDB Integration
Learn more about where this data comes from
Bug Scrub Advisor
Streamline upgrades with automated vendor bug scrubs
BugZero Enterprise
Wish you caught this bug sooner? Get proactive today.