@@ -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"
@@ -325,8 +326,10 @@ func (coll *Collection) insert(
325326 if args .Ordered != nil {
326327 op = op .Ordered (* args .Ordered )
327328 }
328- if args .RawData != nil {
329- op = op .RawData (* args .RawData )
329+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
330+ if rawData , ok := rawDataOpt .(bool ); ok {
331+ op = op .RawData (rawData )
332+ }
330333 }
331334 retry := driver .RetryNone
332335 if coll .client .retryWrites {
@@ -379,8 +382,12 @@ func (coll *Collection) InsertOne(ctx context.Context, document interface{},
379382 if args .Comment != nil {
380383 imOpts .SetComment (args .Comment )
381384 }
382- if args .RawData != nil {
383- imOpts = imOpts .SetRawData (* args .RawData )
385+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
386+ imOpts .Opts = append (imOpts .Opts , func (opts * options.InsertManyOptions ) error {
387+ optionsutil .WithValue (opts .CustomOptions , "rawData" , rawDataOpt )
388+
389+ return nil
390+ })
384391 }
385392 res , err := coll .insert (ctx , []interface {}{document }, imOpts )
386393
@@ -541,8 +548,10 @@ func (coll *Collection) delete(
541548 }
542549 op = op .Let (let )
543550 }
544- if args .RawData != nil {
545- op = op .RawData (* args .RawData )
551+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
552+ if rawData , ok := rawDataOpt .(bool ); ok {
553+ op = op .RawData (rawData )
554+ }
546555 }
547556
548557 // deleteMany cannot be retried
@@ -581,11 +590,11 @@ func (coll *Collection) DeleteOne(
581590 return nil , fmt .Errorf ("failed to construct options from builder: %w" , err )
582591 }
583592 deleteOptions := & options.DeleteManyOptions {
584- Collation : args .Collation ,
585- Comment : args .Comment ,
586- Hint : args .Hint ,
587- Let : args .Let ,
588- RawData : args .RawData ,
593+ Collation : args .Collation ,
594+ Comment : args .Comment ,
595+ Hint : args .Hint ,
596+ Let : args .Let ,
597+ CustomOptions : args .CustomOptions ,
589598 }
590599
591600 return coll .delete (ctx , filter , true , rrOne , deleteOptions )
@@ -1052,8 +1061,10 @@ func aggregate(a aggregateParams, opts ...options.Lister[options.AggregateOption
10521061 }
10531062 op .CustomOptions (customOptions )
10541063 }
1055- if args .RawData != nil {
1056- op = op .RawData (* args .RawData )
1064+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1065+ if rawData , ok := rawDataOpt .(bool ); ok {
1066+ op = op .RawData (rawData )
1067+ }
10571068 }
10581069
10591070 retry := driver .RetryNone
@@ -1143,8 +1154,10 @@ func (coll *Collection) CountDocuments(ctx context.Context, filter interface{},
11431154 }
11441155 op .Hint (hintVal )
11451156 }
1146- if args .RawData != nil {
1147- op = op .RawData (* args .RawData )
1157+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1158+ if rawData , ok := rawDataOpt .(bool ); ok {
1159+ op = op .RawData (rawData )
1160+ }
11481161 }
11491162 retry := driver .RetryNone
11501163 if coll .client .retryReads {
@@ -1227,8 +1240,10 @@ func (coll *Collection) EstimatedDocumentCount(
12271240 }
12281241 op = op .Comment (comment )
12291242 }
1230- if args .RawData != nil {
1231- op = op .RawData (* args .RawData )
1243+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1244+ if rawData , ok := rawDataOpt .(bool ); ok {
1245+ op = op .RawData (rawData )
1246+ }
12321247 }
12331248
12341249 retry := driver .RetryNone
@@ -1319,8 +1334,10 @@ func (coll *Collection) Distinct(
13191334 }
13201335 op .Hint (hint )
13211336 }
1322- if args .RawData != nil {
1323- op = op .RawData (* args .RawData )
1337+ if rawDataOpt := optionsutil .Value (args .CustomOptions , "rawData" ); rawDataOpt != nil {
1338+ if rawData , ok := rawDataOpt .(bool ); ok {
1339+ op = op .RawData (rawData )
1340+ }
13241341 }
13251342 retry := driver .RetryNone
13261343 if coll .client .retryReads {
0 commit comments