24 lines
659 B
Go
24 lines
659 B
Go
package builder
|
||
|
||
// UnwindOption is a functional option for configuring the $unwind stage.
|
||
type UnwindOption func(*UnwindOpts)
|
||
|
||
type UnwindOpts struct {
|
||
PreserveNullAndEmptyArrays bool
|
||
IncludeArrayIndex string
|
||
}
|
||
|
||
// WithPreserveNullAndEmptyArrays tells $unwind to keep docs where the array is null/empty.
|
||
func WithPreserveNullAndEmptyArrays() UnwindOption {
|
||
return func(o *UnwindOpts) {
|
||
o.PreserveNullAndEmptyArrays = true
|
||
}
|
||
}
|
||
|
||
// WithIncludeArrayIndex adds an array‐index field named idxField to each unwound doc.
|
||
func WithIncludeArrayIndex(idxField string) UnwindOption {
|
||
return func(o *UnwindOpts) {
|
||
o.IncludeArrayIndex = idxField
|
||
}
|
||
}
|