@@ -2247,68 +2247,6 @@ func (c *Collection) FindId(id interface{}) *Query {
22472247 return c .Find (bson.D {{"_id" , id }})
22482248}
22492249
2250- type ChangeStream struct {
2251- iter * Iter
2252- options ChangeStreamOptions
2253- pipeline interface {}
2254- readPreference * ReadPreference
2255- }
2256-
2257- type ChangeStreamOptions struct {
2258-
2259- // FullDocument controls the amount of data that the server will return when
2260- // returning a changes document.
2261- FullDocument string
2262-
2263- // ResumeAfter specifies the logical starting point for the new change stream.
2264- ResumeAfter * bson.Raw
2265-
2266- // MaxAwaitTimeMS specifies the maximum amount of time for the server to wait
2267- // on new documents to satisfy a change stream query.
2268- MaxAwaitTimeMS int64
2269-
2270- // BatchSize specifies the number of documents to return per batch.
2271- BatchSize int32
2272-
2273- // Collation specifies the way the server should collate returned data.
2274- Collation * Collation
2275- }
2276-
2277- func constructChangeStreamPipeline (pipeline interface {},
2278- options ChangeStreamOptions ) interface {} {
2279- pipelinev := reflect .ValueOf (pipeline )
2280-
2281- // ensure that the pipeline passed in is a slice.
2282- if pipelinev .Kind () != reflect .Slice {
2283- panic ("pipeline argument must be a slice" )
2284- }
2285-
2286- // construct the options to be used by the change notification
2287- // pipeline stage.
2288- changeNotificationStageOptions := bson.M {}
2289-
2290- if options .FullDocument != "" {
2291- changeNotificationStageOptions ["fullDocument" ] = options .FullDocument
2292- }
2293- if options .ResumeAfter != nil {
2294- changeNotificationStageOptions ["resumeAfter" ] = options .ResumeAfter
2295- }
2296- changeNotificationStage := bson.M {"$changeNotification" : changeNotificationStageOptions }
2297-
2298- pipeOfInterfaces := make ([]interface {}, pipelinev .Len ()+ 1 )
2299-
2300- // insert the change notification pipeline stage at the beginning of the
2301- // aggregation.
2302- pipeOfInterfaces [0 ] = changeNotificationStage
2303-
2304- // convert the passed in slice to a slice of interfaces.
2305- for i := 0 ; i < pipelinev .Len (); i ++ {
2306- pipeOfInterfaces [1 + i ] = pipelinev .Index (i ).Addr ().Interface ()
2307- }
2308- var pipelineAsInterface interface {} = pipeOfInterfaces
2309- return pipelineAsInterface
2310- }
2311-
23122250type Pipe struct {
23132251 session * Session
23142252 collection * Collection
0 commit comments