From ae7c47e61a5b93222a80deac507a7c68a44f94ae Mon Sep 17 00:00:00 2001 From: Taylor Cannon Date: Tue, 14 Oct 2025 15:24:28 -0500 Subject: [PATCH 1/2] feat: match legacy toString output for NumberDecimal type --- snippets/mongocompat/mongotypes.js | 7 ++++++- snippets/mongocompat/test.js | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/snippets/mongocompat/mongotypes.js b/snippets/mongocompat/mongotypes.js index 32539d9..5c699c1 100644 --- a/snippets/mongocompat/mongotypes.js +++ b/snippets/mongocompat/mongotypes.js @@ -443,9 +443,14 @@ if (typeof NumberDecimal !== 'undefined') { if (!NumberDecimal.prototype) { NumberDecimal.prototype = {}; } + NumberDecimal.prototype.nativeToString = NumberDecimal.prototype.toString NumberDecimal.prototype.tojson = function() { - return this.toString(); + return this.nativeToString(); + }; + + NumberDecimal.prototype.toString = function() { + return `NumberDecimal("${this.nativeToString()}")`; }; } diff --git a/snippets/mongocompat/test.js b/snippets/mongocompat/test.js index 66e15f7..904c6d5 100644 --- a/snippets/mongocompat/test.js +++ b/snippets/mongocompat/test.js @@ -22,3 +22,6 @@ assert.strictEqual(minLong.bottom, 0); assert.strictEqual(minLong.exactValueString, "-9223372036854775808"); const nl2 = NumberLong("200"); assert.strictEqual(maxLong.compare(nl2), 1); +const decimal = NumberDecimal("1.1"); +assert.strictEqual(decimal.toString(), 'NumberDecimal("1.1")'); +assert.strictEqual(decimal.tojson(), '1.1'); From 361814128b2fcfa05f3d488ce39a0e9960e47dcb Mon Sep 17 00:00:00 2001 From: Taylor Cannon Date: Wed, 15 Oct 2025 09:43:28 -0500 Subject: [PATCH 2/2] Use new toString for toJson --- snippets/mongocompat/mongotypes.js | 10 +++++----- snippets/mongocompat/test.js | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/snippets/mongocompat/mongotypes.js b/snippets/mongocompat/mongotypes.js index 5c699c1..13dfc3d 100644 --- a/snippets/mongocompat/mongotypes.js +++ b/snippets/mongocompat/mongotypes.js @@ -443,15 +443,15 @@ if (typeof NumberDecimal !== 'undefined') { if (!NumberDecimal.prototype) { NumberDecimal.prototype = {}; } - NumberDecimal.prototype.nativeToString = NumberDecimal.prototype.toString - - NumberDecimal.prototype.tojson = function() { - return this.nativeToString(); - }; + NumberDecimal.prototype.nativeToString = NumberDecimal.prototype.toString NumberDecimal.prototype.toString = function() { return `NumberDecimal("${this.nativeToString()}")`; }; + + NumberDecimal.prototype.tojson = function() { + return this.toString(); + }; } // ObjectId diff --git a/snippets/mongocompat/test.js b/snippets/mongocompat/test.js index 904c6d5..f54223f 100644 --- a/snippets/mongocompat/test.js +++ b/snippets/mongocompat/test.js @@ -24,4 +24,4 @@ const nl2 = NumberLong("200"); assert.strictEqual(maxLong.compare(nl2), 1); const decimal = NumberDecimal("1.1"); assert.strictEqual(decimal.toString(), 'NumberDecimal("1.1")'); -assert.strictEqual(decimal.tojson(), '1.1'); +assert.strictEqual(decimal.tojson(), 'NumberDecimal("1.1")');