I was playing around with createCollection.
Firstly, I was working on my local mongodb. I ran the following code and the shell client threw a lot of code terminated immediately.
db.createCollection("a.");
I started client again and re-run the same command and it says that -
MongoServerError: Collection test.a. already exists.
When I ran the same code on Mongo Web Shell, it also did the same. But I can see the code that was thrown (last few lines)
FUNCTION_STATE_IDENTIFIER = "threw";\n } else throw err;\n } finally {\n if (FUNCTION_STATE_IDENTIFIER !== "threw") FUNCTION_STATE_IDENTIFIER = "returned";\n }\n }\n '),h=o.template.statement("\n let EXPRESSION_HOLDER_IDENTIFIER;"),f=o.template.statements('\n let FUNCTION_STATE_IDENTIFIER = "sync",\n SYNC_RETURN_VALUE_IDENTIFIER;\n\n const ASYNC_RETURN_VALUE_IDENTIFIER = (ASYNC_TRY_CATCH_WRAPPER)();\n\n if (FUNCTION_STATE_IDENTIFIER === "returned")\n return SYNC_RETURN_VALUE_IDENTIFIER;\n else if (FUNCTION_STATE_IDENTIFIER === "threw")\n throw SYNC_RETURN_VALUE_IDENTIFIER;\n FUNCTION_STATE_IDENTIFIER = "async";\n return MSP_IDENTIFIER(ASYNC_RETURN_VALUE_IDENTIFIER);\n '),m=o.template.expression("(\n ORIGINAL_SOURCE,\n EXPRESSION_HOLDER = NODE,\n ISP_IDENTIFIER(EXPRESSION_HOLDER) ? await EXPRESSION_HOLDER : EXPRESSION_HOLDER\n )",{allowAwaitOutsideFunction:!0}),g=o.template.expression("\n ANSP_IDENTIFIER(NODE, ORIGINAL_SOURCE)\n "),y=o.template.statement("\n try {\n ORIGINAL_CODE;\n } catch (err) {\n throw err;\n }\n "),_=o.template.statement(String.raw`
MongoInvalidArgumentError: Collection names must not start or end with '.'
at t.checkCollectionName (/tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2674072)
at new Collection (/tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2452002)
at /tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2570867
at /tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2431876
at /tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2628362
at /tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2627307
at Connection.onMessage (/tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2422155)
at MessageStream.<anonymous> (/tmp/m/boxednode/mongosh/node-v16.20.1/out/Release/node:2:2420014)
at MessageStream.emit (node:events:513:28)
at MessageStream.emit (node:domain:489:12) {
[Symbol(errorLabels)]: Set(0) {}
}
To my surprise, the shell got terminated and I could access the machine. Attached the screenshot