mongodb

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 5, 2026 License: Apache-2.0 Imports: 12 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func CacheKey

func CacheKey(database, collection string, id bson.ObjectID) string

CacheKey generates a cache key for a document query.

func CacheKeyQuery

func CacheKeyQuery(database, collection string, filter interface{}) string

CacheKeyQuery generates a cache key for a query.

func RetryableFunc

func RetryableFunc[T any](ctx context.Context, r *Retrier, fn func() (T, error)) (T, error)

RetryableFunc wraps a function with retry logic.

Types

type Cache

type Cache struct {
	// contains filtered or unexported fields
}

Cache provides an in-memory cache for MongoDB queries.

func NewCache

func NewCache(config CacheConfig) *Cache

NewCache creates a new cache.

func (*Cache) Clear

func (c *Cache) Clear()

Clear removes all items from the cache.

func (*Cache) Delete

func (c *Cache) Delete(key string)

Delete removes an item from the cache.

func (*Cache) DeletePrefix

func (c *Cache) DeletePrefix(prefix string)

DeletePrefix removes all items with a key prefix.

func (*Cache) Get

func (c *Cache) Get(key string) (interface{}, bool)

Get retrieves an item from the cache.

func (*Cache) Set

func (c *Cache) Set(key string, value interface{})

Set stores an item in the cache.

func (*Cache) SetWithTTL

func (c *Cache) SetWithTTL(key string, value interface{}, ttl time.Duration)

SetWithTTL stores an item with a custom TTL.

func (*Cache) Size

func (c *Cache) Size() int

Size returns the number of items in the cache.

type CacheConfig

type CacheConfig struct {
	TTL     time.Duration
	MaxSize int
}

CacheConfig configures the cache.

type CacheEntry

type CacheEntry struct {
	Value     interface{}
	ExpiresAt time.Time
}

CacheEntry represents a cached item.

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client wraps the MongoDB client with convenience methods.

func New

func New(ctx context.Context, uri, database string) (*Client, error)

New creates a new MongoDB client and connects to the database.

func (*Client) Client

func (c *Client) Client() *mongo.Client

Client returns the underlying mongo client for advanced operations.

func (*Client) Close

func (c *Client) Close(ctx context.Context) error

Close disconnects from MongoDB.

func (*Client) CollStats

func (c *Client) CollStats(ctx context.Context, database, collection string) (bson.M, error)

CollStats returns collection statistics.

func (*Client) Collection

func (c *Client) Collection(name string) *mongo.Collection

Collection returns a collection handle.

func (*Client) CreateCollection

func (c *Client) CreateCollection(ctx context.Context, database, collection string) error

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) DBStats

func (c *Client) DBStats(ctx context.Context, database string) (bson.M, error)

DBStats returns database statistics.

func (*Client) Database

func (c *Client) Database() *mongo.Database

Database returns the database handle.

func (*Client) DropCollection

func (c *Client) DropCollection(ctx context.Context, database, collection string) error

DropCollection drops a collection.

func (*Client) DropDatabase

func (c *Client) DropDatabase(ctx context.Context, database string) error

DropDatabase drops a database.

func (*Client) DropIndex

func (c *Client) DropIndex(ctx context.Context, database, collection, indexName string) error

DropIndex drops an index by name.

func (*Client) GetBuildInfo

func (c *Client) GetBuildInfo(ctx context.Context) (bson.M, error)

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

func (c *Client) ListIndexes(ctx context.Context, database, collection string) ([]IndexInfo, error)

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

func (c *Client) RenameCollection(ctx context.Context, database, oldName, newName string) error

RenameCollection renames a collection.

func (*Client) RunCommand

func (c *Client) RunCommand(ctx context.Context, database string, cmd bson.D) (bson.M, error)

RunCommand runs an arbitrary command on a database.

func (*Client) ServerStatus

func (c *Client) ServerStatus(ctx context.Context) (bson.M, error)

ServerStatus returns server status.

type CollectionInfo

type CollectionInfo struct {
	Name    string
	Type    string
	Options bson.M
}

CollectionInfo represents collection information.

type DatabaseInfo

type DatabaseInfo struct {
	Name       string
	SizeOnDisk int64
	Empty      bool
}

DatabaseInfo represents database information.

type IndexInfo

type IndexInfo struct {
	Name   string
	Keys   bson.D
	Unique bool
	Sparse bool
	TTL    *int32
}

IndexInfo represents index 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

func DecodePageToken(token string) (*PageToken, error)

DecodePageToken decodes a page token string.

func (*PageToken) Encode

func (p *PageToken) Encode() string

Encode encodes the page token to a string.

type PaginatedResult

type PaginatedResult struct {
	Documents     []bson.M
	NextPageToken string
	HasMore       bool
}

PaginatedResult contains paginated results.

type PaginationOptions

type PaginationOptions struct {
	PageSize  int32
	PageToken string
	SortField string
	SortDesc  bool
}

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

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) Skip

func (q *QueryBuilder) Skip(n int64) *QueryBuilder

Skip sets the skip.

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.

func NewRetrier

func NewRetrier(config RetryConfig) *Retrier

NewRetrier creates a new retrier.

func (*Retrier) Do

func (r *Retrier) Do(ctx context.Context, fn func() error) error

Do executes a function with retry logic.

func (*Retrier) DoWithResult

func (r *Retrier) DoWithResult(ctx context.Context, fn func() (interface{}, error)) (interface{}, error)

DoWithResult executes a function that returns a result with retry logic.

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.

func (*StreamingPaginator) Next

func (p *StreamingPaginator) Next(ctx context.Context) ([]bson.M, error)

Next returns the next batch of documents.

func (*StreamingPaginator) Start

func (p *StreamingPaginator) Start(ctx context.Context) error

Start initializes the cursor.

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL