import "github.com/256dpi/lungo"
Code:
type post struct { Title string `bson:"title"` } // prepare options opts := Options{ Store: NewMemoryStore(), } // open database client, engine, err := Open(nil, opts) if err != nil { panic(err) } // ensure engine is closed defer engine.Close() // get db foo := client.Database("foo") // get collection bar := foo.Collection("bar") // insert post _, err = bar.InsertOne(nil, &post{ Title: "Hello World!", }) if err != nil { panic(err) } // query posts csr, err := bar.Find(nil, bson.M{}) if err != nil { panic(err) } // decode posts var posts []post err = csr.All(nil, &posts) if err != nil { panic(err) } // print documents pretty.Println(posts)
Output:
[]lungo.post{ {Title:"Hello World!"}, }
catalog.go client.go collection.go cursor.go database.go engine.go indexes.go lungo.go mongo.go result.go session.go store.go stream.go transaction.go utils.go
ErrEngineClosed is returned if the engine has been closed.
ErrSessionEnded is returned if the session has been ended.
Oplog is the handle for the local oplog namespace.
Open will open a lungo database using the provided store.
WithSession will yield a session context to the provided callback that uses the specified session.
type Catalog struct { Namespaces map[Handle]*mongokit.Collection }
Catalog is the top level object per database that contains all data.
NewCatalog creates and returns a new catalog.
Clone will clone the catalog. Namespaces need to be cloned separately.
type Client struct {
// contains filtered or unexported fields
}
Client wraps an Engine to be mongo compatible.
Connect implements the IClient.Connect method.
Database implements the IClient.Database method.
Disconnect implements the IClient.Disconnect method.
func (c *Client) ListDatabaseNames(ctx context.Context, filter interface{}, opts ...*options.ListDatabasesOptions) ([]string, error)
ListDatabaseNames implements the IClient.ListDatabaseNames method.
func (c *Client) ListDatabases(ctx context.Context, filter interface{}, opts ...*options.ListDatabasesOptions) (mongo.ListDatabasesResult, error)
ListDatabases implements the IClient.ListDatabases method.
Ping implements the IClient.Ping method.
StartSession implements the IClient.StartSession method.
UseSession implements the IClient.UseSession method.
func (c *Client) UseSessionWithOptions(ctx context.Context, opt *options.SessionOptions, fn func(ISessionContext) error) error
UseSessionWithOptions implements the IClient.UseSessionWithOptions method.
func (c *Client) Watch(_ context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the IClient.Watch method.
type Collection struct {
// contains filtered or unexported fields
}
Collection wraps an Engine to be mongo compatible.
func (c *Collection) Aggregate(context.Context, interface{}, ...*options.AggregateOptions) (ICursor, error)
Aggregate implements the ICollection.Aggregate method.
func (c *Collection) BulkWrite(ctx context.Context, models []mongo.WriteModel, opts ...*options.BulkWriteOptions) (*mongo.BulkWriteResult, error)
BulkWrite implements the ICollection.BulkWrite method.
func (c *Collection) Clone(opts ...*options.CollectionOptions) (ICollection, error)
Clone implements the ICollection.Clone method.
func (c *Collection) CountDocuments(ctx context.Context, filter interface{}, opts ...*options.CountOptions) (int64, error)
CountDocuments implements the ICollection.CountDocuments method.
func (c *Collection) Database() IDatabase
Database implements the ICollection.Database method.
func (c *Collection) DeleteMany(ctx context.Context, filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error)
DeleteMany implements the ICollection.DeleteMany method.
func (c *Collection) DeleteOne(ctx context.Context, filter interface{}, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error)
DeleteOne implements the ICollection.DeleteOne method.
func (c *Collection) Distinct(ctx context.Context, field string, filter interface{}, opts ...*options.DistinctOptions) ([]interface{}, error)
Distinct implements the ICollection.Distinct method.
func (c *Collection) Drop(ctx context.Context) error
Drop implements the ICollection.Drop method.
func (c *Collection) EstimatedDocumentCount(ctx context.Context, opts ...*options.EstimatedDocumentCountOptions) (int64, error)
EstimatedDocumentCount implements the ICollection.EstimatedDocumentCount method.
func (c *Collection) Find(ctx context.Context, filter interface{}, opts ...*options.FindOptions) (ICursor, error)
Find implements the ICollection.Find method.
func (c *Collection) FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) ISingleResult
FindOne implements the ICollection.FindOne method.
func (c *Collection) FindOneAndDelete(ctx context.Context, filter interface{}, opts ...*options.FindOneAndDeleteOptions) ISingleResult
FindOneAndDelete implements the ICollection.FindOneAndDelete method.
func (c *Collection) FindOneAndReplace(ctx context.Context, filter, replacement interface{}, opts ...*options.FindOneAndReplaceOptions) ISingleResult
FindOneAndReplace implements the ICollection.FindOneAndReplace method.
func (c *Collection) FindOneAndUpdate(ctx context.Context, filter, update interface{}, opts ...*options.FindOneAndUpdateOptions) ISingleResult
FindOneAndUpdate implements the ICollection.FindOneAndUpdate method.
func (c *Collection) Indexes() IIndexView
Indexes implements the ICollection.Indexes method.
func (c *Collection) InsertMany(ctx context.Context, documents []interface{}, opts ...*options.InsertManyOptions) (*mongo.InsertManyResult, error)
InsertMany implements the ICollection.InsertMany method.
func (c *Collection) InsertOne(ctx context.Context, document interface{}, opts ...*options.InsertOneOptions) (*mongo.InsertOneResult, error)
InsertOne implements the ICollection.InsertOne method.
func (c *Collection) Name() string
Name implements the ICollection.Name method.
func (c *Collection) ReplaceOne(ctx context.Context, filter, replacement interface{}, opts ...*options.ReplaceOptions) (*mongo.UpdateResult, error)
ReplaceOne implements the ICollection.ReplaceOne method.
func (c *Collection) UpdateMany(ctx context.Context, filter, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error)
UpdateMany implements the ICollection.UpdateMany method.
func (c *Collection) UpdateOne(ctx context.Context, filter, update interface{}, opts ...*options.UpdateOptions) (*mongo.UpdateResult, error)
UpdateOne implements the ICollection.UpdateOne method.
func (c *Collection) Watch(_ context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the ICollection.Watch method.
type Cursor struct {
// contains filtered or unexported fields
}
Cursor wraps a list to be mongo compatible.
All implements the ICursor.All method.
Close implements the ICursor.Close method.
Decode implements the ICursor.Decode method.
Err implements the ICursor.Err method.
ID implements the ICursor.ID method.
Next implements the ICursor.Next method.
type Database struct {
// contains filtered or unexported fields
}
Database wraps an Engine to be mongo compatible.
func (d *Database) Aggregate(context.Context, interface{}, ...*options.AggregateOptions) (ICursor, error)
Aggregate implements the IDatabase.Aggregate method.
Client implements the IDatabase.Client method.
func (d *Database) Collection(name string, opts ...*options.CollectionOptions) ICollection
Collection implements the IDatabase.Collection method.
Drop implements the IDatabase.Drop method.
func (d *Database) ListCollectionNames(ctx context.Context, filter interface{}, opts ...*options.ListCollectionsOptions) ([]string, error)
ListCollectionNames implements the IDatabase.ListCollectionNames method.
func (d *Database) ListCollections(ctx context.Context, filter interface{}, opts ...*options.ListCollectionsOptions) (ICursor, error)
ListCollections implements the IDatabase.ListCollections method.
Name implements the IDatabase.Name method.
func (d *Database) ReadConcern() *readconcern.ReadConcern
ReadConcern implements the IDatabase.ReadConcern method.
ReadPreference implements the IDatabase.ReadPreference method.
func (d *Database) RunCommand(context.Context, interface{}, ...*options.RunCmdOptions) ISingleResult
RunCommand implements the IDatabase.RunCommand method.
func (d *Database) RunCommandCursor(context.Context, interface{}, ...*options.RunCmdOptions) (ICursor, error)
RunCommandCursor implements the IDatabase.RunCommandCursor method.
func (d *Database) Watch(_ context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the IDatabase.Watch method.
func (d *Database) WriteConcern() *writeconcern.WriteConcern
WriteConcern implements the IDatabase.WriteConcern method.
type Engine struct {
// contains filtered or unexported fields
}
Engine manages the catalog loaded from a store and provides access to it through transactions. Additionally, it also manages streams that subscribe to changes to the catalog.
CreateEngine will create and return an engine with a loaded catalog from the store.
func (e *Engine) Abort(txn *Transaction)
Abort will abort the specified transaction. To ensure a transaction is always released, Abort should be called after finishing any transaction.
Begin will create a new transaction from the current catalog. A locked transaction must be committed or aborted before another transaction can be started. Unlocked transactions serve as a point in time snapshots and can be just be discarded when not being used further.
Close will close the engine.
func (e *Engine) Commit(txn *Transaction) error
Commit will attempt to store the modified catalog and on success replace the current catalog. If an error is returned the transaction has been aborted and become invalid.
func (e *Engine) Watch(handle Handle, pipeline bsonkit.List, resumeAfter, startAfter bsonkit.Doc, startAt *primitive.Timestamp) (*Stream, error)
Watch will return a stream that is able to consume events from the oplog.
type File struct { Namespaces map[string]FileNamespace `bson:"namespaces"` }
File is the format of the file stored by the file store.
type FileIndex struct { Key bsonkit.Doc `bson:"key"` Unique bool `bson:"unique"` Partial bsonkit.Doc `bson:"partial"` Expiry time.Duration `bson:"expiry"` }
FileIndex is a single index stored in a file by the file store.
type FileNamespace struct { Documents bsonkit.List `bson:"documents"` Indexes map[string]FileIndex `bson:"indexes"` }
FileNamespace is a single namespace stored in a file by the file store.
type FileStore struct {
// contains filtered or unexported fields
}
FileStore writes the catalog to a single file on disk.
NewFileStore creates and returns a new file store.
Load will read the catalog from disk and return it.
Store will atomically write the catalog to disk.
Handle is a two component identifier for namespaces where the first part is the database and the second the collection.
String will return the string form of the handle.
Validate will validate the handle.
type IChangeStream interface { Close(context.Context) error Decode(interface{}) error Err() error ID() int64 Next(context.Context) bool ResumeToken() bson.Raw }
IChangeStream defines a generic change stream.
type IClient interface { Connect(context.Context) error Database(string, ...*options.DatabaseOptions) IDatabase Disconnect(context.Context) error ListDatabaseNames(context.Context, interface{}, ...*options.ListDatabasesOptions) ([]string, error) ListDatabases(context.Context, interface{}, ...*options.ListDatabasesOptions) (mongo.ListDatabasesResult, error) Ping(context.Context, *readpref.ReadPref) error StartSession(...*options.SessionOptions) (ISession, error) UseSession(context.Context, func(ISessionContext) error) error UseSessionWithOptions(context.Context, *options.SessionOptions, func(ISessionContext) error) error Watch(context.Context, interface{}, ...*options.ChangeStreamOptions) (IChangeStream, error) }
IClient defines a generic client.
Connect will connect to a MongoDB database and return a lungo compatible client.
NewClient will create and return a new client.
type ICollection interface { Aggregate(context.Context, interface{}, ...*options.AggregateOptions) (ICursor, error) BulkWrite(context.Context, []mongo.WriteModel, ...*options.BulkWriteOptions) (*mongo.BulkWriteResult, error) Clone(...*options.CollectionOptions) (ICollection, error) CountDocuments(context.Context, interface{}, ...*options.CountOptions) (int64, error) Database() IDatabase DeleteMany(context.Context, interface{}, ...*options.DeleteOptions) (*mongo.DeleteResult, error) DeleteOne(context.Context, interface{}, ...*options.DeleteOptions) (*mongo.DeleteResult, error) Distinct(context.Context, string, interface{}, ...*options.DistinctOptions) ([]interface{}, error) Drop(context.Context) error EstimatedDocumentCount(context.Context, ...*options.EstimatedDocumentCountOptions) (int64, error) Find(context.Context, interface{}, ...*options.FindOptions) (ICursor, error) FindOne(context.Context, interface{}, ...*options.FindOneOptions) ISingleResult FindOneAndDelete(context.Context, interface{}, ...*options.FindOneAndDeleteOptions) ISingleResult FindOneAndReplace(context.Context, interface{}, interface{}, ...*options.FindOneAndReplaceOptions) ISingleResult FindOneAndUpdate(context.Context, interface{}, interface{}, ...*options.FindOneAndUpdateOptions) ISingleResult Indexes() IIndexView InsertMany(context.Context, []interface{}, ...*options.InsertManyOptions) (*mongo.InsertManyResult, error) InsertOne(context.Context, interface{}, ...*options.InsertOneOptions) (*mongo.InsertOneResult, error) Name() string ReplaceOne(context.Context, interface{}, interface{}, ...*options.ReplaceOptions) (*mongo.UpdateResult, error) UpdateMany(context.Context, interface{}, interface{}, ...*options.UpdateOptions) (*mongo.UpdateResult, error) UpdateOne(context.Context, interface{}, interface{}, ...*options.UpdateOptions) (*mongo.UpdateResult, error) Watch(context.Context, interface{}, ...*options.ChangeStreamOptions) (IChangeStream, error) }
ICollection defines a generic collection.
type ICursor interface { All(context.Context, interface{}) error Close(context.Context) error Decode(interface{}) error Err() error ID() int64 Next(context.Context) bool }
ICursor defines a generic cursor.
type IDatabase interface { Aggregate(context.Context, interface{}, ...*options.AggregateOptions) (ICursor, error) Client() IClient Collection(string, ...*options.CollectionOptions) ICollection Drop(context.Context) error ListCollectionNames(context.Context, interface{}, ...*options.ListCollectionsOptions) ([]string, error) ListCollections(context.Context, interface{}, ...*options.ListCollectionsOptions) (ICursor, error) Name() string ReadConcern() *readconcern.ReadConcern ReadPreference() *readpref.ReadPref RunCommand(context.Context, interface{}, ...*options.RunCmdOptions) ISingleResult RunCommandCursor(context.Context, interface{}, ...*options.RunCmdOptions) (ICursor, error) Watch(context.Context, interface{}, ...*options.ChangeStreamOptions) (IChangeStream, error) WriteConcern() *writeconcern.WriteConcern }
IDatabase defines a generic database.
type IIndexView interface { CreateMany(context.Context, []mongo.IndexModel, ...*options.CreateIndexesOptions) ([]string, error) CreateOne(context.Context, mongo.IndexModel, ...*options.CreateIndexesOptions) (string, error) DropAll(context.Context, ...*options.DropIndexesOptions) (bson.Raw, error) DropOne(context.Context, string, ...*options.DropIndexesOptions) (bson.Raw, error) List(context.Context, ...*options.ListIndexesOptions) (ICursor, error) }
IIndexView defines a generic index view.
type ISession interface { AbortTransaction(context.Context) error AdvanceClusterTime(bson.Raw) error AdvanceOperationTime(*primitive.Timestamp) error Client() IClient ClusterTime() bson.Raw CommitTransaction(context.Context) error EndSession(context.Context) OperationTime() *primitive.Timestamp StartTransaction(...*options.TransactionOptions) error WithTransaction(context.Context, func(ISessionContext) (interface{}, error), ...*options.TransactionOptions) (interface{}, error) }
ISession defines a generic session.
ISessionContext defines a generic session context.
type ISingleResult interface { Decode(interface{}) error DecodeBytes() (bson.Raw, error) Err() error }
ISingleResult defines a generic single result
type IndexView struct {
// contains filtered or unexported fields
}
IndexView wraps an Engine to be mongo compatible.
func (v *IndexView) CreateMany(ctx context.Context, indexes []mongo.IndexModel, opts ...*options.CreateIndexesOptions) ([]string, error)
CreateMany implements the IIndexView.CreateMany method.
func (v *IndexView) CreateOne(ctx context.Context, index mongo.IndexModel, opts ...*options.CreateIndexesOptions) (string, error)
CreateOne implements the IIndexView.CreateOne method.
func (v *IndexView) DropAll(ctx context.Context, opts ...*options.DropIndexesOptions) (bson.Raw, error)
DropAll implements the IIndexView.DropAll method.
func (v *IndexView) DropOne(ctx context.Context, name string, opts ...*options.DropIndexesOptions) (bson.Raw, error)
DropOne implements the IIndexView.DropOne method.
func (v *IndexView) List(ctx context.Context, opts ...*options.ListIndexesOptions) (ICursor, error)
List implements the IIndexView.List method.
type MemoryStore struct {
// contains filtered or unexported fields
}
MemoryStore holds the catalog in memory.
func NewMemoryStore() *MemoryStore
NewMemoryStore creates and returns a new memory store.
func (m MemoryStore) Load() (*Catalog, error)
Load will return the catalog.
func (m MemoryStore) Store(data *Catalog) error
Store will store the catalog.
MongoClient wraps a mongo.Client to be lungo compatible.
func (c *MongoClient) Database(name string, opts ...*options.DatabaseOptions) IDatabase
Database implements the IClient.Database method.
func (c *MongoClient) StartSession(opts ...*options.SessionOptions) (ISession, error)
StartSession implements the IClient.StartSession method.
func (c *MongoClient) UseSession(ctx context.Context, fn func(ISessionContext) error) error
UseSession implements the IClient.UseSession method.
func (c *MongoClient) UseSessionWithOptions(ctx context.Context, opt *options.SessionOptions, fn func(ISessionContext) error) error
UseSessionWithOptions implements the IClient.UseSessionWithOptions method.
func (c *MongoClient) Watch(ctx context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the IClient.Watch method.
type MongoCollection struct { *mongo.Collection // contains filtered or unexported fields }
MongoCollection wraps a mongo.Collection to be lungo compatible.
func (c *MongoCollection) Aggregate(ctx context.Context, pipeline interface{}, opts ...*options.AggregateOptions) (ICursor, error)
Aggregate implements the ICollection.Aggregate method.
func (c *MongoCollection) Clone(opts ...*options.CollectionOptions) (ICollection, error)
Clone implements the ICollection.Clone method.
func (c *MongoCollection) Database() IDatabase
Database implements the ICollection.Database method.
func (c *MongoCollection) Find(ctx context.Context, filter interface{}, opts ...*options.FindOptions) (ICursor, error)
Find implements the ICollection.Find method.
func (c *MongoCollection) FindOne(ctx context.Context, filter interface{}, opts ...*options.FindOneOptions) ISingleResult
FindOne implements the ICollection.FindOne method.
func (c *MongoCollection) FindOneAndDelete(ctx context.Context, filter interface{}, opts ...*options.FindOneAndDeleteOptions) ISingleResult
FindOneAndDelete implements the ICollection.FindOneAndDelete method.
func (c *MongoCollection) FindOneAndReplace(ctx context.Context, filter, replacement interface{}, opts ...*options.FindOneAndReplaceOptions) ISingleResult
FindOneAndReplace implements the ICollection.FindOneAndReplace method.
func (c *MongoCollection) FindOneAndUpdate(ctx context.Context, filter, update interface{}, opts ...*options.FindOneAndUpdateOptions) ISingleResult
FindOneAndUpdate implements the ICollection.FindOneAndUpdate method.
func (c *MongoCollection) Indexes() IIndexView
Indexes implements the ICollection.Indexes method.
func (c *MongoCollection) Watch(ctx context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the ICollection.Watch method.
MongoDatabase wraps a mongo.Database to be lungo compatible.
func (d *MongoDatabase) Aggregate(ctx context.Context, pipeline interface{}, opts ...*options.AggregateOptions) (ICursor, error)
Aggregate implements the IDatabase.Aggregate method.
func (d *MongoDatabase) Client() IClient
Client implements the IDatabase.Client method.
func (d *MongoDatabase) Collection(name string, opts ...*options.CollectionOptions) ICollection
Collection implements the IDatabase.Collection method.
func (d *MongoDatabase) ListCollections(ctx context.Context, filter interface{}, opts ...*options.ListCollectionsOptions) (ICursor, error)
ListCollections implements the IDatabase.ListCollections method.
func (d *MongoDatabase) RunCommand(ctx context.Context, runCommand interface{}, opts ...*options.RunCmdOptions) ISingleResult
RunCommand implements the IDatabase.RunCommand method.
func (d *MongoDatabase) RunCommandCursor(ctx context.Context, filter interface{}, opts ...*options.RunCmdOptions) (ICursor, error)
RunCommandCursor implements the IDatabase.RunCommandCursor method.
func (d *MongoDatabase) Watch(ctx context.Context, pipeline interface{}, opts ...*options.ChangeStreamOptions) (IChangeStream, error)
Watch implements the IDatabase.Watch method.
MongoIndexView wraps a mongo.IndexView to be lungo compatible.
func (m *MongoIndexView) List(ctx context.Context, opts ...*options.ListIndexesOptions) (ICursor, error)
List implements the IIndexView.List method.
MongoSession wraps a mongo.Session to be lungo compatible.
func (s *MongoSession) Client() IClient
Client implements the ISession.Client method.
func (s *MongoSession) WithTransaction(ctx context.Context, fn func(ISessionContext) (interface{}, error), opts ...*options.TransactionOptions) (interface{}, error)
WithTransaction implements the ISession.WithTransaction method.
type MongoSessionContext struct { context.Context *MongoSession }
MongoSessionContext wraps a mongo.SessionContext to be lungo compatible.
Opcode defines the type of an operation.
The available opcodes.
Strings returns the opcode name.
type Operation struct { // The opcode. Opcode Opcode // The filter document (replace, update, delete). Filter bsonkit.Doc // The insert, update or replacement document. Document bsonkit.Doc // Whether an upsert should be performed (replace, update). Upsert bool // The limit (one, many). Limit int }
Operation defines a single operation.
type Options struct { // The store used by the engine to load and store the catalog. Store Store // The interval at which expired documents are removed. // // Default: 60s. ExpireInterval time.Duration // The function that is called with errors from the expiry goroutine. ExpireErrors func(error) }
Options is used to configure an engine.
type Result struct { // The list of matched documents. Matched bsonkit.List // The list of inserted, replace or updated documents. Modified bsonkit.List // The upserted document. Upserted bsonkit.Doc // The error that occurred during the operation. Error error }
Result describes the outcome of an operation.
type Session struct {
// contains filtered or unexported fields
}
Session provides a mongo compatible way to handle transactions.
AbortTransaction implements the ISession.AbortTransaction method.
AdvanceClusterTime implements the ISession.AdvanceClusterTime method.
AdvanceOperationTime implements the ISession.AdvanceOperationTime method.
Client implements the ISession.Client method.
ClusterTime implements the ISession.ClusterTime method.
CommitTransaction implements the ISession.CommitTransaction method.
EndSession implements the ISession.EndSession method.
OperationTime implements the ISession.OperationTime method.
func (s *Session) StartTransaction(opts ...*options.TransactionOptions) error
StartTransaction implements the ISession.StartTransaction method.
func (s *Session) Transaction() *Transaction
Transaction will return the active transaction or nil if no transaction has been started.
func (s *Session) WithTransaction(ctx context.Context, fn func(ISessionContext) (interface{}, error), opts ...*options.TransactionOptions) (interface{}, error)
WithTransaction implements the ISession.WithTransaction method.
SessionContext provides a mongo compatible session context.
type SingleResult struct {
// contains filtered or unexported fields
}
SingleResult wraps a result to be mongo compatible.
func (r *SingleResult) Decode(out interface{}) error
Decode implements the ISingleResult.Decode method.
func (r *SingleResult) DecodeBytes() (bson.Raw, error)
DecodeBytes implements the ISingleResult.DecodeBytes method.
func (r *SingleResult) Err() error
Err implements the ISingleResult.Err method.
Store is the interface that describes storage adapters.
type Stream struct {
// contains filtered or unexported fields
}
Stream provides a mongo compatible way to read oplog events.
Close implements the IChangeStream.Close method.
Decode implements the IChangeStream.Decode method.
Err implements the IChangeStream.Err method.
ID implements the IChangeStream.ID method.
Next implements the IChangeStream.Next method.
ResumeToken implements the IChangeStream.ResumeToken method.
type Transaction struct {
// contains filtered or unexported fields
}
Transaction buffers multiple changes to a catalog.
func NewTransaction(catalog *Catalog) *Transaction
NewTransaction creates and returns a new transaction.
Bulk performs the specified operations in one go. If ordered is true the process is aborted on the first error.
func (t *Transaction) Catalog() *Catalog
Catalog will return the modified catalog by the transaction.
func (t *Transaction) CountDocuments(handle Handle) (int, error)
CountDocuments will return the number of documents in the specified namespace.
func (t *Transaction) CreateIndex(handle Handle, name string, config mongokit.IndexConfig) (string, error)
CreateIndex will create the specified index in the specified namespace. It is a no-op if an index with the same name and configuration already exists.
Delete will remove all matching documents from the namespace. Sort, skip and limit may be supplied to modify the result. The returned result will contain the matched documents.
func (t *Transaction) Dirty() bool
Dirty will return whether the transaction contains changes.
func (t *Transaction) Drop(handle Handle) error
Drop will return the namespace with the specified handle from the catalog. If the second part of the handle is empty, it will drop all namespaces matching the first part.
func (t *Transaction) DropIndex(handle Handle, name string) error
DropIndex will drop the specified index in the specified namespace.
func (t *Transaction) Expire() error
Expire will remove documents that are expired due to a TTL index.
func (t *Transaction) Find(handle Handle, query, sort bsonkit.Doc, skip, limit int) (*Result, error)
Find will query documents from a namespace. Sort, skip and limit may be supplied to modify the result. The returned results will contain the matched list of documents.
Insert will insert the specified documents into the namespace. The engine will automatically generate an object id per document if it is missing. If ordered is enabled the operation is aborted on the first error and the result returned. Otherwise, the engine will try to insert all documents. The returned results will contain the inserted documents and potential errors.
ListCollections will return a list of all collections in the specified db.
ListDatabases will return a list of all databases in the catalog.
ListIndexes will return a list of indexes in the specified namespace.
func (t *Transaction) Replace(handle Handle, query, sort, repl bsonkit.Doc, upsert bool) (*Result, error)
Replace will replace the first matching document with the specified replacement document. If upsert is enabled, it will insert the replacement document if it is missing. The returned result will contain the matched and modified or upserted document.
func (t *Transaction) Update(handle Handle, query, sort, update bsonkit.Doc, limit int, upsert bool) (*Result, error)
Update will apply the update to all matching document. Sort, skip and limit may be supplied to modify the result. If upsert is enabled, it will extract constant parts of the query and apply the update and insert the document if it is missing. The returned result will contain the matched and modified or upserted document.
Path | Synopsis |
---|---|
bsonkit | |
dbkit | |
mongokit |
Package lungo imports 21 packages (graph) and is imported by 1 packages. Updated 2019-12-02. Refresh now. Tools for package owners.