@@ -551,7 +551,9 @@ function executeCommands(
551
551
function resultHandler ( err ?: AnyError , result ?: Document ) {
552
552
// Error is a driver related error not a bulk op error, return early
553
553
if ( err && 'message' in err && ! ( err instanceof MongoWriteConcernError ) ) {
554
- return callback ( new BulkWriteError ( err , new BulkWriteResult ( bulkOperation . s . bulkResult ) ) ) ;
554
+ return callback (
555
+ new MongoBulkWriteError ( err , new BulkWriteResult ( bulkOperation . s . bulkResult ) )
556
+ ) ;
555
557
}
556
558
557
559
if ( err instanceof MongoWriteConcernError ) {
@@ -651,7 +653,10 @@ function handleMongoWriteConcernError(
651
653
) ;
652
654
653
655
callback (
654
- new BulkWriteError ( new MongoError ( wrappedWriteConcernError ) , new BulkWriteResult ( bulkResult ) )
656
+ new MongoBulkWriteError (
657
+ new MongoError ( wrappedWriteConcernError ) ,
658
+ new BulkWriteResult ( bulkResult )
659
+ )
655
660
) ;
656
661
}
657
662
@@ -660,16 +665,39 @@ function handleMongoWriteConcernError(
660
665
* @public
661
666
* @category Error
662
667
*/
663
- export class BulkWriteError extends MongoError {
664
- result ? : BulkWriteResult ;
668
+ export class MongoBulkWriteError extends MongoError {
669
+ result : BulkWriteResult ;
665
670
666
- /** Creates a new BulkWriteError */
667
- constructor ( error ?: AnyError , result ?: BulkWriteResult ) {
671
+ /** Number of documents inserted. */
672
+ insertedCount : number ;
673
+ /** Number of documents matched for update. */
674
+ matchedCount : number ;
675
+ /** Number of documents modified. */
676
+ modifiedCount : number ;
677
+ /** Number of documents deleted. */
678
+ deletedCount : number ;
679
+ /** Number of documents upserted. */
680
+ upsertedCount : number ;
681
+ /** Inserted document generated Id's, hash key is the index of the originating operation */
682
+ insertedIds : { [ key : number ] : ObjectId } ;
683
+ /** Upserted document generated Id's, hash key is the index of the originating operation */
684
+ upsertedIds : { [ key : number ] : ObjectId } ;
685
+
686
+ /** Creates a new MongoBulkWriteError */
687
+ constructor ( error : AnyError , result : BulkWriteResult ) {
668
688
super ( error as Error ) ;
669
689
Object . assign ( this , error ) ;
670
690
671
- this . name = 'BulkWriteError ' ;
691
+ this . name = 'MongoBulkWriteError ' ;
672
692
this . result = result ;
693
+
694
+ this . insertedCount = result . insertedCount ;
695
+ this . matchedCount = result . matchedCount ;
696
+ this . modifiedCount = result . modifiedCount ;
697
+ this . deletedCount = result . deletedCount ;
698
+ this . upsertedCount = result . upsertedCount ;
699
+ this . insertedIds = result . insertedIds ;
700
+ this . upsertedIds = result . upsertedIds ;
673
701
}
674
702
}
675
703
@@ -1214,7 +1242,7 @@ export abstract class BulkOperationBase {
1214
1242
: 'write operation failed' ;
1215
1243
1216
1244
callback (
1217
- new BulkWriteError (
1245
+ new MongoBulkWriteError (
1218
1246
new MongoError ( {
1219
1247
message : msg ,
1220
1248
code : this . s . bulkResult . writeErrors [ 0 ] . code ,
@@ -1229,7 +1257,7 @@ export abstract class BulkOperationBase {
1229
1257
1230
1258
const writeConcernError = writeResult . getWriteConcernError ( ) ;
1231
1259
if ( writeConcernError ) {
1232
- callback ( new BulkWriteError ( new MongoError ( writeConcernError ) , writeResult ) ) ;
1260
+ callback ( new MongoBulkWriteError ( new MongoError ( writeConcernError ) , writeResult ) ) ;
1233
1261
return true ;
1234
1262
}
1235
1263
}
0 commit comments