Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var (
ErrUnsupportedType = errors.New("Unsupported type")
)
Functions ¶
This section is empty.
Types ¶
type Aggregate ¶
type Aggregate interface {
One(result interface{}, ctx ...context.Context) error
All(result interface{}, ctx ...context.Context) error
// SetAllowDiskUse sets the value for the AllowDiskUse field.
SetAllowDiskUse(b bool) Aggregate
// SetBatchSize sets the value for the BatchSize field.
SetBatchSize(i int32) Aggregate
// SetBypassDocumentValidation sets the value for the BypassDocumentValidation field.
SetBypassDocumentValidation(b bool) Aggregate
// SetCollation sets the value for the Collation field.
SetCollation(c *options.Collation) Aggregate
// SetMaxTime sets the value for the MaxTime field.
SetMaxTime(d time.Duration) Aggregate
// SetMaxAwaitTime sets the value for the MaxAwaitTime field.
SetMaxAwaitTime(d time.Duration) Aggregate
// SetComment sets the value for the Comment field.
SetComment(s string) Aggregate
// SetHint sets the value for the Hint field.
SetHint(h interface{}) Aggregate
Pipeline(pipeline bson.A) Aggregate
Match(c Condition) Aggregate
SetDatabase(db string) Aggregate
Collection(doc interface{}) Aggregate
SetCollReadPreference(rp *readpref.ReadPref) Aggregate
SetCollRegistry(r *bsoncodec.Registry) Aggregate
SetCollWriteConcern(wc *writeconcern.WriteConcern) Aggregate
SetReadConcern(rc *readconcern.ReadConcern) Aggregate
}
type Client ¶
type Client interface {
// FindPagination find
FindPagination(page, count int64, doc interface{}, ctx ...context.Context) error
FindOneAndReplace(doc interface{}, ctx ...context.Context) error
FindOneAndUpdate(doc interface{}, ctx ...context.Context) (*mongo.SingleResult, error)
FindAndDelete(doc interface{}, ctx ...context.Context) error
FindOne(doc interface{}, ctx ...context.Context) error
FindAll(docs interface{}, ctx ...context.Context) error
RegexFilter(key, pattern string) Session
Distinct(doc interface{}, columns string, ctx ...context.Context) ([]interface{}, error)
FindOneAndUpdateBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.SingleResult, error)
// InsertOne insert
InsertOne(v interface{}, ctx ...context.Context) (primitive.ObjectID, error)
InsertMany(v interface{}, ctx ...context.Context) (*mongo.InsertManyResult, error)
BulkWrite(docs interface{}, ctx ...context.Context) (*mongo.BulkWriteResult, error)
ReplaceOne(doc interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
// Update update
Update(bean interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
// UpdateMany The following operation updates all of the documents with quantity value less than 50.
UpdateMany(bean interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
UpdateOneBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
UpdateManyBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
// SoftDeleteOne delete
SoftDeleteOne(filter interface{}, ctx ...context.Context) error
SoftDeleteMany(filter interface{}, ctx ...context.Context) error
DeleteOne(filter interface{}, ctx ...context.Context) (*mongo.DeleteResult, error)
DeleteMany(filter interface{}, ctx ...context.Context) (*mongo.DeleteResult, error)
// DataBase db operation
DataBase() *mongo.Database
// Collection(name string, db ...string) *mongo.Collection
Collection(name string, collOpts []*options.CollectionOptions, db ...string) *mongo.Collection
Ping() error
Connect(ctx ...context.Context) (err error)
Disconnect(ctx ...context.Context) error
// Soft filter
Soft(s bool) Session
FilterBy(object interface{}) Session
Filter(key string, value interface{}) Session
Asc(colNames ...string) Session
Eq(key string, value interface{}) Session
Ne(key string, ne interface{}) Session
Nin(key string, nin interface{}) Session
Nor(c Condition) Session
Exists(key string, exists bool, filter ...Condition) Session
Type(key string, t interface{}) Session
Expr(filter Condition) Session
Regex(key string, value string) Session
ID(id interface{}) Session
Gt(key string, value interface{}) Session
Gte(key string, value interface{}) Session
Lt(key string, value interface{}) Session
Lte(key string, value interface{}) Session
In(key string, value interface{}) Session
And(filter Condition) Session
Not(key string, value interface{}) Session
Or(filter Condition) Session
Limit(limit int64) Session
Skip(skip int64) Session
Count(i interface{}, ctx ...context.Context) (int64, error)
Desc(s1 ...string) Session
FilterBson(d bson.D) Session
// NewIndexes indexes
NewIndexes() Indexes
DropAll(doc interface{}, ctx ...context.Context) error
DropOne(doc interface{}, name string, ctx ...context.Context) error
AddIndex(keys interface{}, opt ...*options.IndexOptions) Indexes
// NewSession session
NewSession() Session
Aggregate() Aggregate
// CollectionNameForStruct SetDatabase(string string) Client
CollectionNameForStruct(doc interface{}) (*schemas.Collection, error)
CollectionNameForSlice(doc interface{}) (*schemas.Collection, error)
Transaction(ctx context.Context, f schemas.TransFunc) error
TransactionWithOptions(ctx context.Context, f schemas.TransFunc, opt ...*options.SessionOptions) error
}
type Condition ¶
type Condition interface {
RegexFilter(key, pattern string) Condition
ID(id interface{}) Condition
// Eq Equals a Specified Value
//{ qty: 20 }
//Field in Embedded Document Equals a Value
//{"item.name": "ab" }
// Equals an Array Value
//{ tags: [ "A", "B" ] }
Eq(key string, value interface{}) Condition
// Gt {field: {$gt: value} } >
Gt(key string, gt interface{}) Condition
// Gte { qty: { $gte: 20 } } >=
Gte(key string, gte interface{}) Condition
// In { field: { $in: [<value1>, <value2>, ... <valueN> ] } }
// tags: { $in: [ /^be/, /^st/ ] } }
// in []string []int ...
In(key string, in interface{}) Condition
// Lt {field: {$lt: value} } <
Lt(key string, lt interface{}) Condition
// Lte { field: { $lte: value} } <=
Lte(key string, lte interface{}) Condition
// Ne {field: {$ne: value} } !=
Ne(key string, ne interface{}) Condition
// Nin { field: { $nin: [ <value1>, <value2> ... <valueN> ]} } the field does not exist.
Nin(key string, nin interface{}) Condition
// And { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
//$and: [
// { $or: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } } ] },
// { $or: [ { sale: true }, { price : { $lt : 5 } } ] }
// ]
And(filter Condition) Condition
// Not { field: { $not: { <operator-expression> } } }
//not and Regular Expressions
//{ item: { $not: /^p.*/ } }
Not(key string, not interface{}) Condition
// Nor { $nor: [ { price: 1.99 }, { price: { $exists: false } },
// { sale: true }, { sale: { $exists: false } } ] }
// price != 1.99 || sale != true || sale exists || sale exists
Nor(filter Condition) Condition
// Or { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }
Or(filter Condition) Condition
Exists(key string, exists bool, filter ...Condition) Condition
// Type { field: { $type: <BSON type> } }
// { "_id" : 1, address : "2030 Martian Way", zipCode : "90698345" },
// { "_id" : 2, address: "156 Lunar Place", zipCode : 43339374 },
// db.find( { "zipCode" : { $type : 2 } } ); or db.find( { "zipCode" : { $type : "string" } }
// return { "_id" : 1, address : "2030 Martian Way", zipCode : "90698345" }
Type(key string, t interface{}) Condition
// Expr Allows the use of aggregation expressions within the query language.
//{ $expr: { <expression> } }
//$expr can build query expressions that compare fields from the same document in a $match stage
//todo 没用过,不知道行不行。。https://docs.mongodb.com/manual/reference/operator/query/expr/#op._S_expr
Expr(filter Condition) Condition
// Regex todo 简单实现,后续增加支持
Regex(key string, value string) Condition
Filters() (bson.D, error)
A() bson.A
Err() error
FilterBson(d interface{}) Condition
FilterBy(object interface{}) Condition
Clone() Condition
}
type Indexes ¶
type Indexes interface {
CreateIndexes(doc interface{}, ctx ...context.Context) ([]string, error)
DropAll(doc interface{}, ctx ...context.Context) error
DropOne(doc interface{}, name string, ctx ...context.Context) error
AddIndex(keys interface{}, opt ...*options.IndexOptions) Indexes
// SetMaxTime sets the value for the MaxTime field.
SetMaxTime(d time.Duration) Indexes
// SetCommitQuorumInt sets the value for the CommitQuorum field as an int32.
SetCommitQuorumInt(quorum int32) Indexes
// SetCommitQuorumString sets the value for the CommitQuorum field as a string.
SetCommitQuorumString(quorum string) Indexes
// SetCommitQuorumMajority sets the value for the CommitQuorum to special "majority" value.
SetCommitQuorumMajority() Indexes
// SetCommitQuorumVotingMembers sets the value for the CommitQuorum to special "votingMembers" value.
SetCommitQuorumVotingMembers() Indexes
SetDatabase(db string) Indexes
Collection(doc interface{}) Indexes
}
type Session ¶
type Session interface {
BulkWrite(docs interface{}, ctx ...context.Context) (*mongo.BulkWriteResult, error)
FilterBy(object interface{}) Session
Distinct(doc interface{}, columns string, ctx ...context.Context) ([]interface{}, error)
ReplaceOne(doc interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
FindOneAndReplace(doc interface{}, ctx ...context.Context) error
FindOneAndUpdate(doc interface{}, ctx ...context.Context) (*mongo.SingleResult, error)
FindOneAndUpdateBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.SingleResult, error)
FindPagination(page, count int64, doc interface{}, ctx ...context.Context) error
FindAndDelete(doc interface{}, ctx ...context.Context) error
// FindOne executes a find command and returns a SingleResult for one document in the collectionByName.
FindOne(doc interface{}, ctx ...context.Context) error
// FindAll Find executes a find command and returns a Cursor over the matching documents in the collectionByName.
FindAll(rowsSlicePtr interface{}, ctx ...context.Context) error
// InsertOne executes an insert command to insert a single document into the collectionByName.
InsertOne(doc interface{}, ctx ...context.Context) (primitive.ObjectID, error)
// InsertMany executes an insert command to insert multiple documents into the collectionByName.
InsertMany(docs interface{}, ctx ...context.Context) (*mongo.InsertManyResult, error)
// DeleteOne executes a delete command to delete at most one document from the collectionByName.
DeleteOne(doc interface{}, ctx ...context.Context) (*mongo.DeleteResult, error)
SoftDeleteOne(doc interface{}, ctx ...context.Context) error
// DeleteMany executes a delete command to delete documents from the collectionByName.
DeleteMany(doc interface{}, ctx ...context.Context) (*mongo.DeleteResult, error)
SoftDeleteMany(doc interface{}, ctx ...context.Context) error
Clone() Session
Limit(i int64) Session
Skip(i int64) Session
Count(i interface{}, ctx ...context.Context) (int64, error)
UpdateOne(bean interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
UpdateOneBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
UpdateManyBson(coll interface{}, bson interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
UpdateMany(bean interface{}, ctx ...context.Context) (*mongo.UpdateResult, error)
RegexFilter(key, pattern string) Session
ID(id interface{}) Session
Asc(colNames ...string) Session
Desc(colNames ...string) Session
Sort(colNames ...string) Session
Soft(f bool) Session
Filter(key string, value interface{}) Session
FilterBson(d bson.D) Session
// Eq Equals a Specified Value
//{ qty: 20 }
//Field in Embedded Document Equals a Value
//{"item.name": "ab" }
// Equals an Array Value
//{ tags: [ "A", "B" ] }
Eq(key string, value interface{}) Session
// Gt {field: {$gt: value} } >
Gt(key string, gt interface{}) Session
// Gte { qty: { $gte: 20 } } >=
Gte(key string, gte interface{}) Session
// In { field: { $in: [<value1>, <value2>, ... <valueN> ] } }
// tags: { $in: [ /^be/, /^st/ ] } }
// in []string []int ...
In(key string, in interface{}) Session
// Lt {field: {$lt: value} } <
Lt(key string, lt interface{}) Session
// Lte { field: { $lte: value} } <=
Lte(key string, lte interface{}) Session
// Ne {field: {$ne: value} } !=
Ne(key string, ne interface{}) Session
// Nin { field: { $nin: [ <value1>, <value2> ... <valueN> ]} } the field does not exist.
Nin(key string, nin interface{}) Session
// And { $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
//$and: [
// { $or: [ { qty: { $lt : 10 } }, { qty : { $gt: 50 } } ] },
// { $or: [ { sale: true }, { price : { $lt : 5 } } ] }
// ]
And(c Condition) Session
// Not { field: { $not: { <operator-expression> } } }
//not and Regular Expressions
//{ item: { $not: /^p.*/ } }
Not(key string, not interface{}) Session
// Nor { $nor: [ { price: 1.99 }, { price: { $exists: false } },
// { sale: true }, { sale: { $exists: false } } ] }
// price != 1.99 || sale != true || sale exists || sale exists
Nor(c Condition) Session
// Or { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] }
Or(c Condition) Session
Exists(key string, exists bool, filter ...Condition) Session
// SetArrayFilters sets the value for the ArrayFilters field.
SetArrayFilters(filters options.ArrayFilters) Session
// SetOrdered sets the value for the Ordered field.
SetOrdered(ordered bool) Session
// SetBypassDocumentValidation sets the value for the BypassDocumentValidation field.
SetBypassDocumentValidation(b bool) Session
// SetReturnDocument sets the value for the ReturnDocument field.
SetReturnDocument(rd options.ReturnDocument) Session
// SetUpsert sets the value for the Upsert field.
SetUpsert(b bool) Session
// SetCollation sets the value for the Collation field.
SetCollation(collation *options.Collation) Session
// SetMaxTime sets the value for the MaxTime field.
SetMaxTime(d time.Duration) Session
// SetProjection sets the value for the Projection field.
SetProjection(projection interface{}) Session
// SetSort sets the value for the Sort field.
SetSort(sort interface{}) Session
// SetHint sets the value for the Hint field.
SetHint(hint interface{}) Session
// Type { field: { $type: <BSON type> } }
// { "_id" : 1, address : "2030 Martian Way", zipCode : "90698345" },
// { "_id" : 2, address: "156 Lunar Place", zipCode : 43339374 },
// db.find( { "zipCode" : { $type : 2 } } ); or db.find( { "zipCode" : { $type : "string" } }
// return { "_id" : 1, address : "2030 Martian Way", zipCode : "90698345" }
Type(key string, t interface{}) Session
// Expr Allows the use of aggregation expressions within the query language.
//{ $expr: { <expression> } }
//$expr can build query expressions that compare fields from the same document in a $match stage
//todo 没用过,不知道行不行。。https://docs.mongodb.com/manual/reference/operator/query/expr/#op._S_expr
Expr(c Condition) Session
// Regex todo 简单实现,后续增加支持
Regex(key string, value string) Session
SetDatabase(db string) Session
SetCollRegistry(r *bsoncodec.Registry) Session
SetCollReadPreference(rp *readpref.ReadPref) Session
SetCollWriteConcern(wc *writeconcern.WriteConcern) Session
SetReadConcern(rc *readconcern.ReadConcern) Session
}
Click to show internal directories.
Click to hide internal directories.