@@ -17,6 +17,7 @@ import (
1717 "go.mongodb.org/mongo-driver/v2/bson"
1818 "go.mongodb.org/mongo-driver/v2/internal/csfle"
1919 "go.mongodb.org/mongo-driver/v2/internal/mongoutil"
20+ "go.mongodb.org/mongo-driver/v2/internal/optionsutil"
2021 "go.mongodb.org/mongo-driver/v2/internal/serverselector"
2122 "go.mongodb.org/mongo-driver/v2/mongo/options"
2223 "go.mongodb.org/mongo-driver/v2/mongo/readconcern"
@@ -324,8 +325,10 @@ func (coll *Collection) insert(
324325 if args .Ordered != nil {
325326 op = op .Ordered (* args .Ordered )
326327 }
327- if args .RawData != nil {
328- op = op .RawData (* args .RawData )
328+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
329+ if rawData , ok := rawDataOpt .(bool ); ok {
330+ op = op .RawData (rawData )
331+ }
329332 }
330333 retry := driver .RetryNone
331334 if coll .client .retryWrites {
@@ -378,8 +381,12 @@ func (coll *Collection) InsertOne(ctx context.Context, document interface{},
378381 if args .Comment != nil {
379382 imOpts .SetComment (args .Comment )
380383 }
381- if args .RawData != nil {
382- imOpts = imOpts .SetRawData (* args .RawData )
384+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
385+ imOpts .Opts = append (imOpts .Opts , func (opts * options.InsertManyOptions ) error {
386+ optionsutil .WithValue (opts .CustomOptions , "rawData" , rawDataOpt )
387+
388+ return nil
389+ })
383390 }
384391 res , err := coll .insert (ctx , []interface {}{document }, imOpts )
385392
@@ -540,8 +547,10 @@ func (coll *Collection) delete(
540547 }
541548 op = op .Let (let )
542549 }
543- if args .RawData != nil {
544- op = op .RawData (* args .RawData )
550+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
551+ if rawData , ok := rawDataOpt .(bool ); ok {
552+ op = op .RawData (rawData )
553+ }
545554 }
546555
547556 // deleteMany cannot be retried
@@ -580,11 +589,11 @@ func (coll *Collection) DeleteOne(
580589 return nil , fmt .Errorf ("failed to construct options from builder: %w" , err )
581590 }
582591 deleteOptions := & options.DeleteManyOptions {
583- Collation : args .Collation ,
584- Comment : args .Comment ,
585- Hint : args .Hint ,
586- Let : args .Let ,
587- RawData : args .RawData ,
592+ Collation : args .Collation ,
593+ Comment : args .Comment ,
594+ Hint : args .Hint ,
595+ Let : args .Let ,
596+ CustomOptions : args .CustomOptions ,
588597 }
589598
590599 return coll .delete (ctx , filter , true , rrOne , deleteOptions )
@@ -1046,8 +1055,10 @@ func aggregate(a aggregateParams, opts ...options.Lister[options.AggregateOption
10461055 }
10471056 op .CustomOptions (customOptions )
10481057 }
1049- if args .RawData != nil {
1050- op = op .RawData (* args .RawData )
1058+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1059+ if rawData , ok := rawDataOpt .(bool ); ok {
1060+ op = op .RawData (rawData )
1061+ }
10511062 }
10521063
10531064 retry := driver .RetryNone
@@ -1137,8 +1148,10 @@ func (coll *Collection) CountDocuments(ctx context.Context, filter interface{},
11371148 }
11381149 op .Hint (hintVal )
11391150 }
1140- if args .RawData != nil {
1141- op = op .RawData (* args .RawData )
1151+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1152+ if rawData , ok := rawDataOpt .(bool ); ok {
1153+ op = op .RawData (rawData )
1154+ }
11421155 }
11431156 retry := driver .RetryNone
11441157 if coll .client .retryReads {
@@ -1221,8 +1234,10 @@ func (coll *Collection) EstimatedDocumentCount(
12211234 }
12221235 op = op .Comment (comment )
12231236 }
1224- if args .RawData != nil {
1225- op = op .RawData (* args .RawData )
1237+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1238+ if rawData , ok := rawDataOpt .(bool ); ok {
1239+ op = op .RawData (rawData )
1240+ }
12261241 }
12271242
12281243 retry := driver .RetryNone
@@ -1313,8 +1328,10 @@ func (coll *Collection) Distinct(
13131328 }
13141329 op .Hint (hint )
13151330 }
1316- if args .RawData != nil {
1317- op = op .RawData (* args .RawData )
1331+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1332+ if rawData , ok := rawDataOpt .(bool ); ok {
1333+ op = op .RawData (rawData )
1334+ }
13181335 }
13191336 retry := driver .RetryNone
13201337 if coll .client .retryReads {
0 commit comments