diff --git a/package-lock.json b/package-lock.json index f46f91d052..e3306faea4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24502,13 +24502,13 @@ } }, "node_modules/mongodb": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", - "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.19.0.tgz", + "integrity": "sha512-H3GtYujOJdeKIMLKBT9PwlDhGrQfplABNF1G904w6r5ZXKWyv77aB0X9B+rhmaAwjtllHzaEkvi9mkGVZxs2Bw==", "dev": true, "dependencies": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", + "bson": "^6.10.4", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -24520,7 +24520,7 @@ "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", - "snappy": "^7.2.2", + "snappy": "^7.3.2", "socks": "^2.7.1" }, "peerDependenciesMeta": { @@ -34671,7 +34671,7 @@ "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", - "mongodb": "6.15.0", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", @@ -45817,7 +45817,7 @@ "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", - "mongodb": "6.15.0", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", @@ -59154,13 +59154,13 @@ "optional": true }, "mongodb": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", - "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", + "version": "6.19.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.19.0.tgz", + "integrity": "sha512-H3GtYujOJdeKIMLKBT9PwlDhGrQfplABNF1G904w6r5ZXKWyv77aB0X9B+rhmaAwjtllHzaEkvi9mkGVZxs2Bw==", "dev": true, "requires": { "@mongodb-js/saslprep": "^1.1.9", - "bson": "^6.10.3", + "bson": "^6.10.4", "mongodb-connection-string-url": "^3.0.0" } }, diff --git a/packages/instrumentation-mongodb/package.json b/packages/instrumentation-mongodb/package.json index 843588c417..9882833a1d 100644 --- a/packages/instrumentation-mongodb/package.json +++ b/packages/instrumentation-mongodb/package.json @@ -65,7 +65,7 @@ "@types/mocha": "10.0.10", "@types/node": "18.18.14", "cross-env": "7.0.3", - "mongodb": "6.15.0", + "mongodb": "6.19.0", "nyc": "17.1.0", "rimraf": "5.0.10", "test-all-versions": "6.1.0", diff --git a/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts b/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts index da4083a179..a0674395dc 100644 --- a/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts +++ b/packages/instrumentation-mongodb/test/mongodb-v5-v6.test.ts @@ -509,18 +509,29 @@ describe('MongoDBInstrumentation-Tracing-v5', () => { create({ responseHook: (span: Span, result: any) => { const { data } = result; - if (data.n) { - span.setAttribute('mongodb_insert_count', result.data.n); + + // from 6.19.0 insert returns a MongoDBResponse class with a + // `toObject()` method instead of the plain { ok: 1, n: [Number] } response + let insertCount = data.n; + if (!insertCount && typeof data.toObject === 'function') { + insertCount = data.toObject().n; + } + + if (insertCount) { + span.setAttribute('mongodb_insert_count', insertCount); } + // from v6.8.0 the cursor property is not an object but an instance of // `CursorResponse`. We need to use the `toObject` method to be able to inspect the data - const cursorObj = data.cursor.firstBatch - ? data.cursor - : data.cursor.toObject(); - span.setAttribute( - 'mongodb_first_result', - JSON.stringify(cursorObj.firstBatch[0]) - ); + if (data.cursor) { + const cursorObj = data.cursor.firstBatch + ? data.cursor + : data.cursor.toObject(); + span.setAttribute( + 'mongodb_first_result', + JSON.stringify(cursorObj.firstBatch[0]) + ); + } }, }); });