Documentation
¶
Overview ¶
Package mongodb provides admin operations.
Package mongodb provides caching layer for MongoDB operations.
Package mongodb provides MongoDB repository implementations.
Package mongodb provides collection operations.
Package mongodb provides index operations.
Package mongodb provides cursor-based pagination.
Package mongodb provides a fluent pipeline builder.
Package mongodb provides a fluent query builder.
Package mongodb provides retry logic for MongoDB operations.
Package mongodb provides transaction management.
Index ¶
- func CacheKey(database, collection string, id bson.ObjectID) string
- func CacheKeyQuery(database, collection string, filter interface{}) string
- func RetryableFunc[T any](ctx context.Context, r *Retrier, fn func() (T, error)) (T, error)
- type Cache
- func (c *Cache) Clear()
- func (c *Cache) Delete(key string)
- func (c *Cache) DeletePrefix(prefix string)
- func (c *Cache) Get(key string) (interface{}, bool)
- func (c *Cache) Set(key string, value interface{})
- func (c *Cache) SetWithTTL(key string, value interface{}, ttl time.Duration)
- func (c *Cache) Size() int
- type CacheConfig
- type CacheEntry
- type Client
- func (c *Client) Client() *mongo.Client
- func (c *Client) Close(ctx context.Context) error
- func (c *Client) CollStats(ctx context.Context, database, collection string) (bson.M, error)
- func (c *Client) Collection(name string) *mongo.Collection
- func (c *Client) CreateCollection(ctx context.Context, database, collection string) error
- func (c *Client) CreateCollectionWithOptions(ctx context.Context, database, collection string, capped bool, ...) error
- func (c *Client) CreateIndex(ctx context.Context, database, collection string, index IndexInfo) (string, error)
- func (c *Client) DBStats(ctx context.Context, database string) (bson.M, error)
- func (c *Client) Database() *mongo.Database
- func (c *Client) DropCollection(ctx context.Context, database, collection string) error
- func (c *Client) DropDatabase(ctx context.Context, database string) error
- func (c *Client) DropIndex(ctx context.Context, database, collection, indexName string) error
- func (c *Client) GetBuildInfo(ctx context.Context) (bson.M, error)
- func (c *Client) ListCollections(ctx context.Context, database string, includeSystem bool) ([]CollectionInfo, error)
- func (c *Client) ListDatabases(ctx context.Context) ([]DatabaseInfo, error)
- func (c *Client) ListIndexes(ctx context.Context, database, collection string) ([]IndexInfo, error)
- func (c *Client) NewStreamingPaginator(database, collection string, filter, sort bson.D, batchSize int32) *StreamingPaginator
- func (c *Client) Paginate(ctx context.Context, database, collection string, filter bson.D, ...) (*PaginatedResult, error)
- func (c *Client) RenameCollection(ctx context.Context, database, oldName, newName string) error
- func (c *Client) RunCommand(ctx context.Context, database string, cmd bson.D) (bson.M, error)
- func (c *Client) ServerStatus(ctx context.Context) (bson.M, error)
- type CollectionInfo
- type DatabaseInfo
- type IndexInfo
- type ManagedSession
- type PageToken
- type PaginatedResult
- type PaginationOptions
- type PipelineBuilder
- func (p *PipelineBuilder) AddFields(fields bson.D) *PipelineBuilder
- func (p *PipelineBuilder) Append(stages ...bson.D) *PipelineBuilder
- func (p *PipelineBuilder) Build() bson.A
- func (p *PipelineBuilder) Count(field string) *PipelineBuilder
- func (p *PipelineBuilder) Facet(facets map[string]bson.A) *PipelineBuilder
- func (p *PipelineBuilder) Group(id interface{}, accumulators bson.D) *PipelineBuilder
- func (p *PipelineBuilder) Limit(n int64) *PipelineBuilder
- func (p *PipelineBuilder) Lookup(from, localField, foreignField, as string) *PipelineBuilder
- func (p *PipelineBuilder) LookupPipeline(from, as string, let bson.D, pipeline bson.A) *PipelineBuilder
- func (p *PipelineBuilder) Match(filter bson.D) *PipelineBuilder
- func (p *PipelineBuilder) MatchQuery(q *QueryBuilder) *PipelineBuilder
- func (p *PipelineBuilder) Merge(into string, on []string) *PipelineBuilder
- func (p *PipelineBuilder) Out(collection string) *PipelineBuilder
- func (p *PipelineBuilder) Project(fields bson.D) *PipelineBuilder
- func (p *PipelineBuilder) ReplaceRoot(newRoot interface{}) *PipelineBuilder
- func (p *PipelineBuilder) Sample(size int64) *PipelineBuilder
- func (p *PipelineBuilder) Skip(n int64) *PipelineBuilder
- func (p *PipelineBuilder) Sort(sort bson.D) *PipelineBuilder
- func (p *PipelineBuilder) SortAsc(field string) *PipelineBuilder
- func (p *PipelineBuilder) SortDesc(field string) *PipelineBuilder
- func (p *PipelineBuilder) Unwind(path string) *PipelineBuilder
- func (p *PipelineBuilder) UnwindPreserve(path string) *PipelineBuilder
- type QueryBuilder
- func (q *QueryBuilder) And(builders ...*QueryBuilder) *QueryBuilder
- func (q *QueryBuilder) Build() (filter, projection, sort bson.D, limit, skip int64)
- func (q *QueryBuilder) Eq(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) Exclude(fields ...string) *QueryBuilder
- func (q *QueryBuilder) Exists(field string, exists bool) *QueryBuilder
- func (q *QueryBuilder) Filter() bson.D
- func (q *QueryBuilder) Gt(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) Gte(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) In(field string, values ...interface{}) *QueryBuilder
- func (q *QueryBuilder) Limit(n int64) *QueryBuilder
- func (q *QueryBuilder) Lt(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) Lte(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) Ne(field string, value interface{}) *QueryBuilder
- func (q *QueryBuilder) NotIn(field string, values ...interface{}) *QueryBuilder
- func (q *QueryBuilder) Or(builders ...*QueryBuilder) *QueryBuilder
- func (q *QueryBuilder) OrderBy(field string) *QueryBuilder
- func (q *QueryBuilder) OrderByDesc(field string) *QueryBuilder
- func (q *QueryBuilder) Regex(field, pattern string, options string) *QueryBuilder
- func (q *QueryBuilder) Select(fields ...string) *QueryBuilder
- func (q *QueryBuilder) Skip(n int64) *QueryBuilder
- func (q *QueryBuilder) Where(field string, value interface{}) *QueryBuilder
- type Retrier
- type RetryConfig
- type StreamingPaginator
- type TransactionManager
- func (tm *TransactionManager) Abort(ctx context.Context, txnID string) error
- func (tm *TransactionManager) ActiveTransactions() int
- func (tm *TransactionManager) Begin(ctx context.Context, database string, readOnly bool) (string, error)
- func (tm *TransactionManager) Commit(ctx context.Context, txnID string) error
- func (tm *TransactionManager) GetSession(txnID string) (*mongo.Session, bool)
- func (tm *TransactionManager) WithTransaction(ctx context.Context, database string, fn func(ctx context.Context) error) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CacheKeyQuery ¶
CacheKeyQuery generates a cache key for a query.
Types ¶
type Cache ¶
type Cache struct {
// contains filtered or unexported fields
}
Cache provides an in-memory cache for MongoDB queries.
func (*Cache) DeletePrefix ¶
DeletePrefix removes all items with a key prefix.
func (*Cache) SetWithTTL ¶
SetWithTTL stores an item with a custom TTL.
type CacheConfig ¶
CacheConfig configures the cache.
type CacheEntry ¶
CacheEntry represents a cached item.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps the MongoDB client with convenience methods.
func (*Client) Collection ¶
func (c *Client) Collection(name string) *mongo.Collection
Collection returns a collection handle.
func (*Client) CreateCollection ¶
CreateCollection creates a new collection.
func (*Client) CreateCollectionWithOptions ¶
func (c *Client) CreateCollectionWithOptions(ctx context.Context, database, collection string, capped bool, maxSize, maxDocs int64) error
CreateCollectionWithOptions creates a collection with options.
func (*Client) CreateIndex ¶
func (c *Client) CreateIndex(ctx context.Context, database, collection string, index IndexInfo) (string, error)
CreateIndex creates an index on a collection.
func (*Client) DropCollection ¶
DropCollection drops a collection.
func (*Client) DropDatabase ¶
DropDatabase drops a database.
func (*Client) GetBuildInfo ¶
GetBuildInfo returns MongoDB build information.
func (*Client) ListCollections ¶
func (c *Client) ListCollections(ctx context.Context, database string, includeSystem bool) ([]CollectionInfo, error)
ListCollections lists collections in a database.
func (*Client) ListDatabases ¶
func (c *Client) ListDatabases(ctx context.Context) ([]DatabaseInfo, error)
ListDatabases lists all databases.
func (*Client) ListIndexes ¶
ListIndexes lists indexes on a collection.
func (*Client) NewStreamingPaginator ¶
func (c *Client) NewStreamingPaginator(database, collection string, filter, sort bson.D, batchSize int32) *StreamingPaginator
NewStreamingPaginator creates a streaming paginator.
func (*Client) Paginate ¶
func (c *Client) Paginate(ctx context.Context, database, collection string, filter bson.D, opts PaginationOptions) (*PaginatedResult, error)
Paginate performs a cursor-based paginated query.
func (*Client) RenameCollection ¶
RenameCollection renames a collection.
func (*Client) RunCommand ¶
RunCommand runs an arbitrary command on a database.
type CollectionInfo ¶
CollectionInfo represents collection information.
type DatabaseInfo ¶
DatabaseInfo represents database information.
type ManagedSession ¶
type ManagedSession struct {
Session *mongo.Session
StartTime time.Time
Database string
ReadOnly bool
}
ManagedSession wraps a MongoDB session with metadata.
type PageToken ¶
type PageToken struct {
LastID bson.ObjectID `json:"id,omitempty"`
LastValue interface{} `json:"v,omitempty"`
SortField string `json:"f,omitempty"`
Timestamp time.Time `json:"ts"`
}
PageToken represents an opaque pagination token.
func DecodePageToken ¶
DecodePageToken decodes a page token string.
type PaginatedResult ¶
PaginatedResult contains paginated results.
type PaginationOptions ¶
PaginationOptions configures pagination.
type PipelineBuilder ¶
type PipelineBuilder struct {
// contains filtered or unexported fields
}
PipelineBuilder provides a fluent interface for building aggregation pipelines.
func NewPipelineBuilder ¶
func NewPipelineBuilder() *PipelineBuilder
NewPipelineBuilder creates a new pipeline builder.
func (*PipelineBuilder) AddFields ¶
func (p *PipelineBuilder) AddFields(fields bson.D) *PipelineBuilder
AddFields adds an $addFields stage.
func (*PipelineBuilder) Append ¶
func (p *PipelineBuilder) Append(stages ...bson.D) *PipelineBuilder
Append appends raw stages.
func (*PipelineBuilder) Build ¶
func (p *PipelineBuilder) Build() bson.A
Build returns the built pipeline.
func (*PipelineBuilder) Count ¶
func (p *PipelineBuilder) Count(field string) *PipelineBuilder
Count adds a $count stage.
func (*PipelineBuilder) Facet ¶
func (p *PipelineBuilder) Facet(facets map[string]bson.A) *PipelineBuilder
Facet adds a $facet stage.
func (*PipelineBuilder) Group ¶
func (p *PipelineBuilder) Group(id interface{}, accumulators bson.D) *PipelineBuilder
Group adds a $group stage.
func (*PipelineBuilder) Limit ¶
func (p *PipelineBuilder) Limit(n int64) *PipelineBuilder
Limit adds a $limit stage.
func (*PipelineBuilder) Lookup ¶
func (p *PipelineBuilder) Lookup(from, localField, foreignField, as string) *PipelineBuilder
Lookup adds a $lookup stage.
func (*PipelineBuilder) LookupPipeline ¶
func (p *PipelineBuilder) LookupPipeline(from, as string, let bson.D, pipeline bson.A) *PipelineBuilder
LookupPipeline adds a $lookup stage with a pipeline.
func (*PipelineBuilder) Match ¶
func (p *PipelineBuilder) Match(filter bson.D) *PipelineBuilder
Match adds a $match stage.
func (*PipelineBuilder) MatchQuery ¶
func (p *PipelineBuilder) MatchQuery(q *QueryBuilder) *PipelineBuilder
MatchQuery adds a $match stage from a QueryBuilder.
func (*PipelineBuilder) Merge ¶
func (p *PipelineBuilder) Merge(into string, on []string) *PipelineBuilder
Merge adds a $merge stage.
func (*PipelineBuilder) Out ¶
func (p *PipelineBuilder) Out(collection string) *PipelineBuilder
Out adds an $out stage.
func (*PipelineBuilder) Project ¶
func (p *PipelineBuilder) Project(fields bson.D) *PipelineBuilder
Project adds a $project stage.
func (*PipelineBuilder) ReplaceRoot ¶
func (p *PipelineBuilder) ReplaceRoot(newRoot interface{}) *PipelineBuilder
ReplaceRoot adds a $replaceRoot stage.
func (*PipelineBuilder) Sample ¶
func (p *PipelineBuilder) Sample(size int64) *PipelineBuilder
Sample adds a $sample stage.
func (*PipelineBuilder) Skip ¶
func (p *PipelineBuilder) Skip(n int64) *PipelineBuilder
Skip adds a $skip stage.
func (*PipelineBuilder) Sort ¶
func (p *PipelineBuilder) Sort(sort bson.D) *PipelineBuilder
Sort adds a $sort stage.
func (*PipelineBuilder) SortAsc ¶
func (p *PipelineBuilder) SortAsc(field string) *PipelineBuilder
SortAsc adds ascending sort on a field.
func (*PipelineBuilder) SortDesc ¶
func (p *PipelineBuilder) SortDesc(field string) *PipelineBuilder
SortDesc adds descending sort on a field.
func (*PipelineBuilder) Unwind ¶
func (p *PipelineBuilder) Unwind(path string) *PipelineBuilder
Unwind adds an $unwind stage.
func (*PipelineBuilder) UnwindPreserve ¶
func (p *PipelineBuilder) UnwindPreserve(path string) *PipelineBuilder
UnwindPreserve adds an $unwind stage that preserves null/empty arrays.
type QueryBuilder ¶
type QueryBuilder struct {
// contains filtered or unexported fields
}
QueryBuilder provides a fluent interface for building queries.
func NewQueryBuilder ¶
func NewQueryBuilder() *QueryBuilder
NewQueryBuilder creates a new query builder.
func (*QueryBuilder) And ¶
func (q *QueryBuilder) And(builders ...*QueryBuilder) *QueryBuilder
And combines with AND.
func (*QueryBuilder) Build ¶
func (q *QueryBuilder) Build() (filter, projection, sort bson.D, limit, skip int64)
Build returns the built query components.
func (*QueryBuilder) Eq ¶
func (q *QueryBuilder) Eq(field string, value interface{}) *QueryBuilder
Eq adds an equality condition.
func (*QueryBuilder) Exclude ¶
func (q *QueryBuilder) Exclude(fields ...string) *QueryBuilder
Exclude excludes projection fields.
func (*QueryBuilder) Exists ¶
func (q *QueryBuilder) Exists(field string, exists bool) *QueryBuilder
Exists adds an exists condition.
func (*QueryBuilder) Filter ¶
func (q *QueryBuilder) Filter() bson.D
Filter returns just the filter.
func (*QueryBuilder) Gt ¶
func (q *QueryBuilder) Gt(field string, value interface{}) *QueryBuilder
Gt adds a greater-than condition.
func (*QueryBuilder) Gte ¶
func (q *QueryBuilder) Gte(field string, value interface{}) *QueryBuilder
Gte adds a greater-than-or-equal condition.
func (*QueryBuilder) In ¶
func (q *QueryBuilder) In(field string, values ...interface{}) *QueryBuilder
In adds an in-array condition.
func (*QueryBuilder) Limit ¶
func (q *QueryBuilder) Limit(n int64) *QueryBuilder
Limit sets the limit.
func (*QueryBuilder) Lt ¶
func (q *QueryBuilder) Lt(field string, value interface{}) *QueryBuilder
Lt adds a less-than condition.
func (*QueryBuilder) Lte ¶
func (q *QueryBuilder) Lte(field string, value interface{}) *QueryBuilder
Lte adds a less-than-or-equal condition.
func (*QueryBuilder) Ne ¶
func (q *QueryBuilder) Ne(field string, value interface{}) *QueryBuilder
Ne adds a not-equal condition.
func (*QueryBuilder) NotIn ¶
func (q *QueryBuilder) NotIn(field string, values ...interface{}) *QueryBuilder
NotIn adds a not-in-array condition.
func (*QueryBuilder) Or ¶
func (q *QueryBuilder) Or(builders ...*QueryBuilder) *QueryBuilder
Or combines with OR.
func (*QueryBuilder) OrderBy ¶
func (q *QueryBuilder) OrderBy(field string) *QueryBuilder
OrderBy adds ascending sort.
func (*QueryBuilder) OrderByDesc ¶
func (q *QueryBuilder) OrderByDesc(field string) *QueryBuilder
OrderByDesc adds descending sort.
func (*QueryBuilder) Regex ¶
func (q *QueryBuilder) Regex(field, pattern string, options string) *QueryBuilder
Regex adds a regex condition.
func (*QueryBuilder) Select ¶
func (q *QueryBuilder) Select(fields ...string) *QueryBuilder
Select adds projection fields.
func (*QueryBuilder) Where ¶
func (q *QueryBuilder) Where(field string, value interface{}) *QueryBuilder
Where adds a filter condition.
type Retrier ¶
type Retrier struct {
// contains filtered or unexported fields
}
Retrier provides retry functionality for MongoDB operations.
type RetryConfig ¶
type RetryConfig struct {
MaxRetries int
InitialBackoff time.Duration
MaxBackoff time.Duration
Multiplier float64
}
RetryConfig configures retry behavior.
func DefaultRetryConfig ¶
func DefaultRetryConfig() RetryConfig
DefaultRetryConfig returns sensible defaults.
type StreamingPaginator ¶
type StreamingPaginator struct {
// contains filtered or unexported fields
}
StreamingPaginator provides streaming pagination for large result sets.
func (*StreamingPaginator) Close ¶
func (p *StreamingPaginator) Close(ctx context.Context) error
Close closes the paginator.
type TransactionManager ¶
type TransactionManager struct {
// contains filtered or unexported fields
}
TransactionManager manages MongoDB transactions.
func NewTransactionManager ¶
func NewTransactionManager(client *mongo.Client, timeout time.Duration) *TransactionManager
NewTransactionManager creates a new transaction manager.
func (*TransactionManager) Abort ¶
func (tm *TransactionManager) Abort(ctx context.Context, txnID string) error
Abort aborts a transaction.
func (*TransactionManager) ActiveTransactions ¶
func (tm *TransactionManager) ActiveTransactions() int
ActiveTransactions returns the number of active transactions.
func (*TransactionManager) Begin ¶
func (tm *TransactionManager) Begin(ctx context.Context, database string, readOnly bool) (string, error)
Begin starts a new transaction.
func (*TransactionManager) Commit ¶
func (tm *TransactionManager) Commit(ctx context.Context, txnID string) error
Commit commits a transaction.
func (*TransactionManager) GetSession ¶
func (tm *TransactionManager) GetSession(txnID string) (*mongo.Session, bool)
GetSession returns the session for a transaction.
func (*TransactionManager) WithTransaction ¶
func (tm *TransactionManager) WithTransaction(ctx context.Context, database string, fn func(ctx context.Context) error) error
WithTransaction executes a function within a transaction.