Documentation
¶
Index ¶
- Variables
- func X分割排序字段(文本 string) (名称 string, sort int32)
- func X取当前时间() time.Time
- func X是否为无文档错误(错误 error) bool
- func X是否为重复键错误(错误 error) bool
- func X比较版本号(版本号1 string, 版本号2 string) (int, error)
- func X生成对象ID() primitive.ObjectID
- type A
- type Aggregate
- type AggregateI
- type Bulk
- func (b *Bulk) X删除(删除条件 interface{}) *Bulk
- func (b *Bulk) X删除一条(删除条件 interface{}) *Bulk
- func (b *Bulk) X删除并按ID(删除ID interface{}) *Bulk
- func (b *Bulk) X执行(上下文 context.Context) (*BulkResult, error)
- func (b *Bulk) X插入(待插入文档 interface{}) *Bulk
- func (b *Bulk) X更新(更新条件 interface{}, 更新内容 interface{}) *Bulk
- func (b *Bulk) X更新一条(更新条件 interface{}, 更新内容 interface{}) *Bulk
- func (b *Bulk) X更新并按ID(更新ID interface{}, 更新内容 interface{}) *Bulk
- func (b *Bulk) X替换插入(替换条件 interface{}, 替换内容 interface{}) *Bulk
- func (b *Bulk) X替换插入一条(替换条件 interface{}, 替换内容 interface{}) *Bulk
- func (b *Bulk) X替换插入并按ID(替换ID interface{}, 替换内容 interface{}) *Bulk
- func (b *Bulk) X设置有序执行(开启有序 bool) *Bulk
- type BulkResult
- type Change
- type Client
- func (c *Client) X事务(上下文 context.Context, ...) (interface{}, error)
- func (c *Client) X关闭连接(上下文 context.Context) error
- func (c *Client) X创建Session事务(可选选项 ...*options.SessionOptions) (*Session, error)
- func (c *Client) X取版本号() string
- func (c *Client) X是否存活(超时时长 int64) error
- func (c *Client) X设置数据库(数据库名称 string, 可选选项 ...*options.DatabaseOptions) *Database
- type Collection
- func (c *Collection) EnsureIndexes弃用(ctx context.Context, uniques []string, indexes []string) (err error)
- func (c *Collection) X创建多条索引(上下文 context.Context, 索引s []opts.IndexModel) (错误 error)
- func (c *Collection) X创建批量执行() *Bulk
- func (c *Collection) X创建索引(上下文 context.Context, 索引 opts.IndexModel) error
- func (c *Collection) X删除(上下文 context.Context, 删除条件 interface{}, ...) (删除结果 *DeleteResult, 错误 error)
- func (c *Collection) X删除一条(上下文 context.Context, 删除条件 interface{}, ...) (错误 error)
- func (c *Collection) X删除全部索引(上下文 context.Context) (错误 error)
- func (c *Collection) X删除并按ID(上下文 context.Context, 删除ID interface{}, ...) (错误 error)
- func (c *Collection) X删除索引(上下文 context.Context, 索引s []string) error
- func (c *Collection) X删除集合(上下文 context.Context) error
- func (c *Collection) X取副本() (*mongo.Collection, error)
- func (c *Collection) X取变更流(上下文 context.Context, 管道 interface{}, ...) (*mongo.ChangeStream, error)
- func (c *Collection) X取集合名() string
- func (c *Collection) X插入(上下文 context.Context, 待插入文档 interface{}, ...) (插入结果 *InsertOneResult, 错误 error)
- func (c *Collection) X插入多个(上下文 context.Context, 待插入文档 interface{}, ...) (插入结果 *InsertManyResult, 错误 error)
- func (c *Collection) X更新(上下文 context.Context, 更新条件 interface{}, 更新内容 interface{}, ...) (更新结果 *UpdateResult, 错误 error)
- func (c *Collection) X更新一条(上下文 context.Context, 更新条件 interface{}, 更新内容 interface{}, ...) (错误 error)
- func (c *Collection) X更新并按ID(上下文 context.Context, 更新ID interface{}, 更新内容 interface{}, ...) (错误 error)
- func (c *Collection) X替换一条(上下文 context.Context, 替换条件 interface{}, 替换内容 interface{}, ...) (错误 error)
- func (c *Collection) X替换插入(上下文 context.Context, 替换条件 interface{}, 替换内容 interface{}, ...) (结果 *UpdateResult, 错误 error)
- func (c *Collection) X替换插入并按ID(上下文 context.Context, 替换ID interface{}, 替换内容 interface{}, ...) (结果 *UpdateResult, 错误 error)
- func (c *Collection) X查询(上下文 context.Context, 查询条件 interface{}, ...) QueryI
- func (c *Collection) X聚合(上下文 context.Context, 聚合管道 interface{}, ...) AggregateI
- type Config
- type Credential
- type Cursor
- type CursorI
- type D
- type Database
- func (db *Database) X创建集合(上下文 context.Context, 集合名称 string, ...) error
- func (d *Database) X删除数据库(上下文 context.Context) error
- func (d *Database) X取数据库名称() string
- func (d *Database) X取集合(名称 string, 可选选项 ...*options.CollectionOptions) *Collection
- func (d *Database) X执行命令(上下文 context.Context, runCommand interface{}, ...) *mongo.SingleResult
- type DeleteResult
- type E
- type InsertManyResult
- type InsertOneResult
- type M
- type Pipeline
- type QmgoClient
- type Query
- func (q *Query) X分页(页码 int, 页大小 int) QueryI
- func (q *Query) X去重(字段名 string, 切片指针 interface{}) error
- func (q *Query) X取一条(结果指针 interface{}) error
- func (q *Query) X取全部(结果指针 interface{}) error
- func (q *Query) X取分页数(perPage int) int
- func (q *Query) X取数量() (数量 int64, 错误 error)
- func (q *Query) X取结果集() CursorI
- func (q *Query) X取预估数量() (数量 int64, 错误 error)
- func (q *Query) X字段(字段Map interface{}) QueryI
- func (q *Query) X执行命令(change Change, result interface{}) error
- func (q *Query) X指定索引字段(索引字段 interface{}) QueryI
- func (q *Query) X排序(排序字段 ...string) QueryI
- func (q *Query) X设置不超时(是否不超时 bool) QueryI
- func (q *Query) X设置切片过滤(过滤条件 *options.ArrayFilters) QueryI
- func (q *Query) X设置批量处理数量(数量 int64) QueryI
- func (q *Query) X设置排序规则(规则 *options.Collation) QueryI
- func (q *Query) X设置最大返回数(数量 int64) QueryI
- func (q *Query) X跳过(跳过数量 int64) QueryI
- type QueryI
- type ReadPref
- type Session
- type UpdateResult
Constants ¶
This section is empty.
Variables ¶
var ( // ErrQueryNotSlicePointer 如果结果参数不是一个切片的指针,返回此错误 md5:99bf2bfe686c166d X错误_结果参数_必须切片指针 = errors.New("result argument must be a pointer to a slice") // ErrQueryNotSliceType 如果结果参数不是切片的地址时返回错误 md5:a70365d8a017acd7 X错误_结果参数_必须切片地址 = errors.New("result argument must be a slice address") // ErrQueryResultTypeInconsistent 如果查询结果类型与MongoDB值类型不一致时返回 md5:940d09b0f6052a9f X错误_查询结果_类型不一致 = errors.New("result type is not equal mongodb value type") // ErrQueryResultValCanNotChange 如果结果值不能更改,返回这个错误 md5:95f73ebb72c4463a X错误_结果值不能更改 = errors.New("the value of result can not be changed") // ErrNoSuchDocuments 如果未找到文档,则返回此错误 md5:381e7dce5c56bc42 X错误_未找到文档 = mongo.ErrNoDocuments // ErrTransactionRetry 如果事务需要重试时返回该错误 md5:82e274f71f7c0175 X错误_事务_重试 = errors.New("retry transaction") // ErrTransactionNotSupported 如果不支持事务,则返回该错误 md5:97ad2e1fbe2e7207 X错误_事务_不支持 = errors.New("transaction not supported") // ErrNotSupportedUsername 如果用户名无效,则返回此错误 md5:c9df5d462362cad6 X错误_不支持用户名 = errors.New("username not supported") // ErrNotSupportedPassword 如果密码无效时返回 md5:e9df4f7f8304cc70 X错误_不支持密码 = errors.New("password not supported") // ErrNotValidSliceToInsert 如果插入的参数不是一个有效的切片,返回该错误 md5:2b940e5853972183 X错误_插入_无效切片 = errors.New("must be valid slice to insert") // ErrReplacementContainUpdateOperators 如果替换文档中包含更新操作符,返回错误 md5:4f127578930f91fa X错误_替换_文档含更新操作符 = errors.New("replacement document cannot contain keys beginning with '$'") )
Functions ¶
func X是否为无文档错误 ¶
IsErrNoDocuments 检查错误是否表示没有找到文档,既包括 mongo-go-driver 的错误也包括 qmgo 自定义的错误 已弃用,直接判断 err == ErrNoSuchDocuments 或者 err == mongo.ErrNoDocuments 即可 md5:a9bcbf0c80c5509c
Types ¶
type A ¶
[]interface{},如:bson.A{"bar", "world", 3.14159, bson.D{{"qux", 12345}}} , A是bson.A的别名 md5:7a6f09b99ea36324
type Aggregate ¶
type Aggregate struct {
// contains filtered or unexported fields
}
Aggregate是一个聚合的句柄 md5:e06636d2fc45e004
type AggregateI ¶
type AggregateI interface { X取全部(results interface{}) error X取一条(result interface{}) error Iter弃用() CursorI // 被弃用,请使用Cursor替代 md5:56d9bc403e9aa9a9 X取结果集() CursorI }
AggregateI 定义聚合接口 md5:e67c5263d98eafa6
type Bulk ¶
type Bulk struct {
// contains filtered or unexported fields
}
Bulk 是用于批量操作的上下文,这些操作将一次性发送到数据库进行批量写入。
Bulk 不适用于并发使用。
注意:
在批量操作中的单个操作目前不会触发中间件或钩子。
与原版 mgo 不同,qmgo 实现的 Bulk 并不会在不支持原生批量操作的老版本 MongoDB 服务器上模拟逐个执行批量操作。
只有官方驱动支持的操作被暴露出来,因此方法中缺少 InsertMany。 md5:97e7f3c645b8ba7f
func (*Bulk) X执行 ¶
func (b *Bulk) X执行(上下文 context.Context) (*BulkResult, error)
Run 执行收集到的单个批量操作。
调用成功会重置 Bulk。如果返回错误,内部操作队列保持不变,包含成功和失败的操作。 md5:c3ce14d8defe8da0
type BulkResult ¶
type BulkResult struct { // 插入的文档数量。 md5:f44082352897f08b X插入数 int64 // 更新和替换操作中,被过滤器匹配的文档数量。 md5:90fab681d83f2e97 X匹配数 int64 // 被更新和替换操作修改的文档数量。 md5:1e4886e32c8092e3 X修改数 int64 // 删除的文档数量。 md5:8872e8629ebbcf3c X删除数 int64 // 通过update和replace操作插入的文档数量。 md5:3074b4c76263ae0c X替换插入数 int64 // 一个操作索引到每个插入文档的_id的映射。 md5:b4c301dceb41d860 X替换插入IDs map[int64]interface{} }
BulkResult 是由Bulk.Run操作返回的结果类型。 md5:3a422d6b1b20649c
type Change ¶
type Change struct { X更新替换 interface{} // 更新/替换文档 md5:f186fdee95ec3578 X是否替换 bool // 是否替换文档而不是更新 md5:876d0fb0ea394e91 X是否删除 bool // 是否在找到文档后删除它,而不是更新 md5:af3a9b450dfa43f8 X是否未找到时插入 bool // Whether to insert in case the document isn't found, take effect when Remove is false X是否返回新文档 bool // 当Remove为false时,是否返回修改后的文档而不是旧的文档 md5:52269f57ce5c8033 }
Change 包含了通过 Query.Apply 方法运行 findAndModify 命令时所需字段。 md5:39a15027acb265c1
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client 创建一个到Mongo的客户端 md5:3527d3de272044c3
func (*Client) X事务 ¶
func (c *Client) X事务(上下文 context.Context, 回调函数 func(事务上下文 context.Context) (interface{}, error), 可选选项 ...*options.TransactionOptions) (interface{}, error)
DoTransaction 在一个函数中执行整个事务 前置条件: - MongoDB服务器的版本 >= v4.0 - MongoDB服务器的拓扑结构不是Single 同时需要注意以下几点: - 确保回调中的所有操作都使用sessCtx作为context参数 - 如果回调中的操作(包括等于)耗时超过120s,操作将不会生效 - 如果回调中的操作返回qmgo.ErrTransactionRetry,整个事务将重试,因此该事务必须幂等 - 如果回调中的操作返回qmgo.ErrTransactionNotSupported, - 如果ctx参数已经绑定了Session,它将被这个Session替换。 md5:f5555fc9e2733cb9
func (*Client) X创建Session事务 ¶
func (c *Client) X创建Session事务(可选选项 ...*options.SessionOptions) (*Session, error)
Session:在客户端创建一个会话 注意,操作完成后要关闭会话 md5:a25c6035ffabaf48
type Collection ¶
type Collection struct {
// contains filtered or unexported fields
}
Collection 是一个MongoDB集合的句柄 md5:be1b94030609bdd1
func (*Collection) EnsureIndexes弃用 ¶
func (c *Collection) EnsureIndexes弃用(ctx context.Context, uniques []string, indexes []string) (err error)
确保索引(已弃用) 建议使用CreateIndexes / CreateOneIndex以获取更多功能) EnsureIndexes 在集合中创建唯一和非唯一的索引,与CreateIndexes的组合不同: 如果uniques/indexes是`[]string{"name"}`,意味着创建名为"name"的索引 如果uniques/indexes是`[]string{"name,-age", "uid"}`,表示创建复合索引:name和-age,然后创建一个索引:uid md5:c595ad59f9c60c06
func (*Collection) X创建多条索引 ¶
func (c *Collection) X创建多条索引(上下文 context.Context, 索引s []opts.IndexModel) (错误 error)
CreateIndexes 在集合中创建多个索引 如果opts.IndexModel中的Key为[]string{"name"},表示创建索引:name 如果opts.IndexModel中的Key为[]string{"name", "-age"},表示创建复合索引:name和-age md5:822a787892c2186f索引s
func (*Collection) X创建批量执行 ¶
func (c *Collection) X创建批量执行() *Bulk
Bulk返回一个新的上下文,用于准备批量执行操作。 md5:e39897d617450e92
func (*Collection) X创建索引 ¶
func (c *Collection) X创建索引(上下文 context.Context, 索引 opts.IndexModel) error
CreateOneIndex 创建一个索引 如果opts.IndexModel中的Key为[]string{"name"},表示创建名为"name"的索引 如果opts.IndexModel中的Key为[]string{"name","-age"},表示创建复合索引:按照"name"升序和"age"降序 md5:70c27ea42ff3bbbf
func (*Collection) X删除 ¶
func (c *Collection) X删除(上下文 context.Context, 删除条件 interface{}, 可选选项 ...opts.RemoveOptions) (删除结果 *DeleteResult, 错误 error)
RemoveAll 执行一个删除命令,从集合中删除文档。如果 filter 是 bson.M{}(空映射),则会删除集合中的所有文档。 参考:https://docs.mongodb.com/manual/reference/command/delete/ md5:abc51456adc5fc5a
func (*Collection) X删除一条 ¶
func (c *Collection) X删除一条(上下文 context.Context, 删除条件 interface{}, 可选选项 ...opts.RemoveOptions) (错误 error)
Remove 执行删除命令,从集合中最多删除一个文档。 如果 filter 是 bson.M{},DeleteOne 将删除集合中的一个文档。 参考:https://docs.mongodb.com/manual/reference/command/delete/ md5:3b5cf64ce5f460b0
func (*Collection) X删除全部索引 ¶
func (c *Collection) X删除全部索引(上下文 context.Context) (错误 error)
DropAllIndexes 会删除集合上除了_id字段索引之外的所有索引 如果集合上只有_id字段的索引,该函数调用将报告错误 md5:e7655b40436f93df全部索引
func (*Collection) X删除并按ID ¶
func (c *Collection) X删除并按ID(上下文 context.Context, 删除ID interface{}, 可选选项 ...opts.RemoveOptions) (错误 error)
RemoveId 执行删除命令,从集合中删除最多一个文档。 md5:6516d8a8963d018c
func (*Collection) X删除索引 ¶
func (c *Collection) X删除索引(上下文 context.Context, 索引s []string) error
DropIndex 从集合中删除索引,需要删除的索引应与输入的索引列表匹配 索引是 []string{"name"} 表示删除名为 "name" 的单个索引 索引是 []string{"name", "-age"} 表示删除复合索引:name 和排除年龄 (-age) 的部分索引 md5:4ad77e88557061c7索引索引s
func (*Collection) X删除集合 ¶
func (c *Collection) X删除集合(上下文 context.Context) error
DropIndexDropIndex 会删除索引 即使索引不存在,这个操作也是安全的 md5:e7b65cd93b1de7f7集合
func (*Collection) X取副本 ¶
func (c *Collection) X取副本() (*mongo.Collection, error)
CloneCollection 创建集合的副本 md5:5df787f1c8ebab26
func (*Collection) X取变更流 ¶
func (c *Collection) X取变更流(上下文 context.Context, 管道 interface{}, 可选选项 ...*opts.ChangeStreamOptions) (*mongo.ChangeStream, error)
Watch 返回对应集合上所有更改的流。有关更改流的更多信息,请参阅 md5:7b59cfd256c148f3
func (*Collection) X取集合名 ¶
func (c *Collection) X取集合名() string
GetCollectionName 返回集合的名字 md5:440484db8f2a466d
func (*Collection) X插入 ¶
func (c *Collection) X插入(上下文 context.Context, 待插入文档 interface{}, 可选选项 ...opts.InsertOneOptions) (插入结果 *InsertOneResult, 错误 error)
InsertOne 将一个文档插入到集合中 如果在 opts 中设置了 InsertHook,钩子将在其上执行,否则钩子会尝试处理 doc 作为钩子 参考: https://docs.mongodb.com/manual/reference/command/insert/ md5:0255181bb812302d
func (*Collection) X插入多个 ¶
func (c *Collection) X插入多个(上下文 context.Context, 待插入文档 interface{}, 可选选项 ...opts.InsertManyOptions) (插入结果 *InsertManyResult, 错误 error)
InsertMany 执行插入命令,将多个文档插入到集合中。如果opts中的InsertHook被设置,将在其上应用钩子;否则,尝试将doc作为钩子使用。 参考:https://docs.mongodb.com/manual/reference/command/insert/ md5:49f2d7776e74fa79
func (*Collection) X更新 ¶
func (c *Collection) X更新(上下文 context.Context, 更新条件 interface{}, 更新内容 interface{}, 可选选项 ...opts.UpdateOptions) (更新结果 *UpdateResult, 错误 error)
UpdateAll 执行更新命令以更新集合中的文档。 如果没有文档被更新,UpdateResult 中的 matchedCount 将为 0 参考资料: https://docs.mongodb.com/manual/reference/operator/update/ md5:94c36e4a82312809
func (*Collection) X更新一条 ¶
func (c *Collection) X更新一条(上下文 context.Context, 更新条件 interface{}, 更新内容 interface{}, 可选选项 ...opts.UpdateOptions) (错误 error)
UpdateOne 执行一个更新命令,最多更新集合中的一份文档。 参考:https://docs.mongodb.com/manual/reference/operator/update/ md5:a16e90f28370dc2c
func (*Collection) X更新并按ID ¶
func (c *Collection) X更新并按ID(上下文 context.Context, 更新ID interface{}, 更新内容 interface{}, 可选选项 ...opts.UpdateOptions) (错误 error)
UpdateId 执行一个更新命令,最多更新集合中的一个文档。 参考:https://docs.mongodb.com/manual/reference/operator/update/ md5:67764db9e90007e8
func (*Collection) X替换一条 ¶
func (c *Collection) X替换一条(上下文 context.Context, 替换条件 interface{}, 替换内容 interface{}, 可选选项 ...opts.ReplaceOptions) (错误 error)
ReplaceOne 执行更新命令,最多更新集合中的一个文档。如果 opts 中的 UpdateHook 被设置,那么 Hook 将在其上执行,否则 Hook 尝试将 doc 作为 Hook。预期 doc 的类型是用户定义的文档的定义。 md5:1d830477f8b32e37
func (*Collection) X替换插入 ¶
func (c *Collection) X替换插入(上下文 context.Context, 替换条件 interface{}, 替换内容 interface{}, 可选选项 ...opts.UpsertOptions) (结果 *UpdateResult, 错误 error)
Upsert 如果过滤器匹配,则更新一个文档,如果过滤器不匹配,则插入一个文档。如果过滤器无效,会返回错误。 替换参数必须是一个将用于替换所选文档的文档。它不能为nil,且不能包含任何更新运算符。 参考:https://docs.mongodb.com/manual/reference/operator/update/ 如果替换参数包含"_id"字段并且文档已存在,请使用现有ID初始化(即使使用Qmgo默认字段特性也是如此)。否则,会引发"(不可变)字段 '_id' 被修改"的错误。 md5:d7464af9e1e36d77
func (*Collection) X替换插入并按ID ¶
func (c *Collection) X替换插入并按ID(上下文 context.Context, 替换ID interface{}, 替换内容 interface{}, 可选选项 ...opts.UpsertOptions) (结果 *UpdateResult, 错误 error)
UpsertId 如果id匹配,则更新一个文档,如果id不匹配,则插入一个新的文档,并将id注入到文档中。 注意,id是十六进制, 不是文本型, 需要转换后查询. 替换参数必须是一个将用于替换所选文档的文档。它不能为空,并且不能包含任何更新操作符。 参考:https://docs.mongodb.com/manual/reference/operator/update/ md5:2a704aa664092959
func (*Collection) X查询 ¶
func (c *Collection) X查询(上下文 context.Context, 查询条件 interface{}, 可选选项 ...opts.FindOptions) QueryI
Find 通过条件过滤并查找,返回QueryI md5:bda4cc0c85d800a1
func (*Collection) X聚合 ¶
func (c *Collection) X聚合(上下文 context.Context, 聚合管道 interface{}, 可选选项 ...opts.AggregateOptions) AggregateI
Aggregate 在集合上执行聚合命令,并返回一个 AggregateI,用于获取结果文档。 md5:e57ffed517c59fbc
type Config ¶
type Config struct { // URI 示例:[mongodb://][user:pass@]主机1[:端口1][,主机2[:端口2],...][/数据库][?选项] // URI 参考:https://docs.mongodb.com/manual/reference/connection-string/ // // 这段注释解释了一个MongoDB连接字符串的格式,包括可选的部分如用户名、密码、多个服务器地址、数据库名以及可选的连接选项。URI以`mongodb://`开头,后面可以包含认证信息、主机列表、数据库路径和查询参数。链接:提供了官方文档的参考。 // md5:038c28929efbdde0 X连接URI string `json:"uri"` X数据库名 string `json:"database"` X集合名 string `json:"coll"` // ConnectTimeoutMS 指定了建立到服务器连接时使用的超时时间,以毫秒为单位。 // 如果设置为 0,则不会使用超时。 // 默认值为 30 秒。 // md5:bdc6b23048c25478 X连接超时毫秒 *int64 `json:"connectTimeoutMS"` // MaxPoolSize 指定驱动程序连接池到每个服务器的最大连接数。 // 如果设置为 0,则将其设置为 math.MaxInt64, // 默认值为 100。 // md5:6840c2846a8fad6e X最大连接池大小 *uint64 `json:"maxPoolSize"` // MinPoolSize 指定了驱动程序到每个服务器的连接池中允许的最小连接数。如果此值不为零,将为每个服务器的连接池在后台维护,以确保其大小不低于最小值。这也可以通过 "minPoolSize" URI 选项(如 "minPoolSize=100")进行设置。默认值为 0。 // md5:9df8b44a6800236b X最小连接池大小 *uint64 `json:"minPoolSize"` // SocketTimeoutMS 指定了驱动程序在返回网络错误之前,等待套接字读写操作返回的最长时间(以毫秒为单位)。如果此值为0,则表示不使用超时,套接字操作可能无限期阻塞。默认值为300,000毫秒。 // md5:1e1ccf1f35a18417 X套接字超时毫秒 *int64 `json:"socketTimeoutMS"` // ReadPreference 确定哪些服务器适合进行读取操作。默认为 PrimaryMode。 // md5:6ca3a191c28443b8 X读取偏好 *ReadPref `json:"readPreference"` // 可用于在配置客户端时提供身份验证选项。 md5:99c19d7fabc83d2d X身份凭证 *Credential `json:"auth"` }
初始MongoDB实例的配置 md5:09dcbab1d00adb46
type Credential ¶
type Credential struct { X认证机制 string `json:"authMechanism"` X认证源 string `json:"authSource"` X用户名 string `json:"username"` X密码 string `json:"password"` PasswordSet bool `json:"passwordSet"` }
Credential 用于在配置客户端时提供认证选项。
AuthMechanism: 认证机制。支持的值包括 "SCRAM-SHA-256", "SCRAM-SHA-1", "MONGODB-CR", "PLAIN", "GSSAPI", "MONGODB-X509" 和 "MONGODB-AWS"。 这也可以通过 "authMechanism" URI 选项设置(例如 "authMechanism=PLAIN")。更多信息请参阅 https://docs.mongodb.com/manual/core/authentication-mechanisms/。 AuthSource: 用于认证的数据库名称。对于 MONGODB-X509、GSSAPI 和 PLAIN,默认为 "$external",对于所有其他机制默认为 "admin"。 这也可以通过 "authSource" URI 选项设置(例如 "authSource=otherDb")。
Username: 认证用的用户名。这也可以通过 URI 在第一个 @ 字符前设置用户名和密码。例如,用户 "user",密码 "pwd", 主机 "localhost:27017" 的 URI 为 "mongodb://user:pwd@localhost:27017"。对于 X509 认证这是可选的,如果没有指定,将从客户端证书中提取。
Password: 认证用的密码。对于 X509 不允许指定,对于 GSSAPI 是可选的。
PasswordSet: 对于 GSSAPI,如果指定了密码(即使密码为空字符串),此值必须为 true,如果未指定密码,表示应从运行进程的上下文中获取密码。 对于其他机制,此字段会被忽略。 md5:e1c2a73d163c799a
type Cursor ¶
type Cursor struct {
// contains filtered or unexported fields
}
Cursor struct define
func (*Cursor) X关闭 ¶
Close 关闭这个游标。在调用 Close 之后,不应再调用 Next 或 TryNext。 当游标对象不再使用时,应主动关闭它。 md5:7c67b9468038ed61
type CursorI ¶
type CursorI interface { X下一个(result interface{}) bool X关闭() error X取错误() error X取全部(results interface{}) error }
CursorI:Cursor 接口 md5:8a6fa5bfcb19cd93
type D ¶
Key/Value结构体数组, 如:bson.D{{"foo", "bar"}, {"hello", "world"}, {"pi", 3.14159}} ,D是 bson.D 的别名 md5:a2fd7b05e87775b6
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database 是一个指向 MongoDB 数据库的句柄 md5:9217ae5bd9047e3a
func (*Database) X创建集合 ¶
func (db *Database) X创建集合(上下文 context.Context, 集合名称 string, 可选选项 ...options.CreateCollectionOptions) error
CreateCollection 执行一个创建命令,明确在服务器上使用指定名称创建一个新的集合。如果正在创建的集合已经存在,此方法将返回一个 mongo.CommandError。此方法需要驱动程序版本 1.4.0 或更高版本。
参数 opts 可用于指定操作选项(请参阅 options.CreateCollectionOptions 的文档)。 md5:7bd165db4ed05d28
func (*Database) X取集合 ¶
func (d *Database) X取集合(名称 string, 可选选项 ...*options.CollectionOptions) *Collection
Collection 从数据库中获取集合 md5:c5489f5523d5a33d
func (*Database) X执行命令 ¶
func (d *Database) X执行命令(上下文 context.Context, runCommand interface{}, 可选选项 ...options.RunCommandOptions) *mongo.SingleResult
RunCommand 在数据库上执行给定的命令。
runCommand 参数必须是将要执行的命令文档。它不能为 nil。这必须是一个保持顺序的类型,如 bson.D。像 bson.M 这样的映射类型是无效的。 如果命令文档包含会话 ID 或任何事务特定字段,其行为是未定义的。
可以使用 opts 参数来指定此操作的选项(参阅 options.RunCmdOptions 的文档)。 md5:eb93f7217a15650c
type DeleteResult ¶
type DeleteResult struct {
X删除数量 int64 // 删除的文档数量。 md5:8872e8629ebbcf3c
}
DeleteResult 是 DeleteOne 和 DeleteMany 操作返回的结果类型。 md5:2c6c8718a901fb46
type InsertManyResult ¶
type InsertManyResult struct {
// 插入文档的 `_id` 值。驱动程序生成的值类型为 `primitive.ObjectID`。 md5:7f2e18379f71d07a
X插入IDs []interface{}
}
InsertManyResult 是一个由 InsertMany 操作返回的结果类型。 md5:9dcc2360964506ed
type InsertOneResult ¶
type InsertOneResult struct {
// 插入文档的 `_id`。驱动程序生成的值将为 primitive.ObjectID 类型。 md5:3e182da948916b02
X插入ID interface{}
}
InsertOneResult 是InsertOne 操作返回的结果类型。 md5:6a10fcb030441781
type M ¶
map[string]interface{} , 如:bson.M{"foo": "bar", "hello": "world", "pi": 3.14159}, M是 bson.M 的别名 md5:66b7bee0d7904542
type QmgoClient ¶
type QmgoClient struct { *Collection *Database *Client }
QmgoClient 指定操作MongoDB的实例 md5:ef9044b4ab2af757
func X连接 ¶
func X连接(上下文 context.Context, 配置 *Config, 可选选项 ...options.ClientOptions) (Qmgo客户端 *QmgoClient, 错误 error)
Open 根据配置创建客户端实例 QmgoClient 可以操作所有 qmgo.client、qmgo.database 和 qmgo.collection md5:bc872aaa93cf801a
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
定义查询结构体 md5:56541bbc29d4ce15
func (*Query) X去重 ¶
Distinct 从集合中获取指定字段的唯一值,并以切片形式返回。 result 应该是一个指向切片的指针。 函数会检查result切片元素的静态类型是否与MongoDB中获取的数据类型一致。 参考:https://docs.mongodb.com/manual/reference/command/distinct/ md5:b83f3aa5718b2dfd
func (*Query) X取结果集 ¶
Cursor 获取一个 Cursor 对象,可用于遍历查询结果集 在获取到 CursorI 对象后,应主动调用 Close 接口来关闭游标 md5:b1e9fc62a5f777fe
func (*Query) X取预估数量 ¶
EstimatedCount 通过元数据计算集合的数量, EstimatedDocumentCount() 方法比 CountDocuments() 方法更快,因为它使用集合的元数据而不是扫描整个集合。 EstimatedCount 通过元数据计算集合的数量, EstimatedDocumentCount() 方法比 CountDocuments() 方法更快,因为它使用集合的元数据而不是扫描整个集合。 md5:8c9bd7e463139421
func (*Query) X字段 ¶
Select用于确定在返回结果中显示或不显示哪些字段 格式:bson.M{"age": 1} 表示只显示age字段 bson.M{"age": 0} 表示除了age以外的其他字段都显示 如果不显示_id并且设置为0,它将被返回并显示 md5:3beb3c9bd51ad3fe
func (*Query) X执行命令 ¶
Apply 执行 findAndModify 命令,该命令允许根据查询更新、替换或删除文档,并原子性地返回旧版本(默认)或新版本的文档(当 ReturnNew 为 true 时)。
Sort 和 Select 查询方法会影响 Apply 的结果。如果有多个文档匹配查询,Sort 可以通过排序来决定操作哪个文档。Select 则可以仅获取新或旧文档中选定字段的内容。
当 Change.Replace 为 true 时,意味着在集合中最多替换一个文档,且 update 参数必须是一个文档,不能包含任何更新运算符;如果没有找到对象并且 Change.Upsert 为 false,则会返回 ErrNoDocuments 错误。当 Change.Remove 为 true 时,意味着最多删除集合中的一个文档,并返回删除前的文档状态;如果没有找到对象,同样返回 ErrNoDocuments。
如果 Change.Replace 和 Change.Remove 都为 false,则表示最多更新集合中的一个文档,update 参数必须是一个包含更新运算符的文档;如果没有找到对象并且 Change.Upsert 为 false,则返回 ErrNoDocuments。
参考:https://docs.mongodb.com/manual/reference/command/findAndModify/ md5:e14e8d7ceac827ac
func (*Query) X指定索引字段 ¶
Hint 设置Hint字段的值。这应该是字符串形式的索引名称,或者是文档形式的索引规范。默认值为nil,表示不发送提示。 md5:3d3535508606dd43
func (*Query) X排序 ¶
Sort 用于设置返回结果的排序规则 格式:"age" 或 "+age" 表示按年龄字段升序排序,"-age" 表示降序排序 同时传入多个排序字段时,按照字段传递的顺序进行排列。 例如,{"age", "-name"},首先按年龄升序排序,然后按姓名降序排序。 md5:0b1b9f5345904541
func (*Query) X设置切片过滤 ¶
func (q *Query) X设置切片过滤(过滤条件 *options.ArrayFilters) QueryI
SetArrayFilter 用于应用更新数组的过滤器 示例: var res = QueryTestItem{}
change := Change{ Update: bson.M{"$set": bson.M{"instock.$[elem].qty": 100}}, ReturnNew: false, }
cli.Find(context.Background(), bson.M{"name": "Lucas"}).
SetArrayFilters(&options.ArrayFilters{Filters: []interface{}{bson.M{"elem.warehouse": bson.M{"$in": []string{"C", "F"}}},}}). Apply(change, &res)
这段代码的注释说明了`SetArrayFilter`方法是用于设置更新操作中的数组过滤器。它给出了一个例子,展示了如何使用该方法来更新名为"Lucas"的文档中,符合条件("elem.warehouse"在"C"或"F"中)的`instock`数组元素的`qty`字段为100。`Apply`方法最后将变更应用到查询结果上。 md5:3fa80906c918e6a3
func (*Query) X设置最大返回数 ¶
Limit 将找到的最大文档数量限制为 n 默认值为 0,0 表示无限制,返回所有匹配的结果 当限制值小于 0 时,负限制类似于正限制,但返回单个批次结果后关闭游标。 参考 https://docs.mongodb.com/manual/reference/method/cursor.limit/index.html md5:9081095bd35be08f
type QueryI ¶
type QueryI interface { //zj:type QueryI interface { X分页(页码 int, 页大小 int) QueryI X取分页数(perPage int) int //zj: X设置排序规则(collation *options.Collation) QueryI X设置切片过滤(*options.ArrayFilters) QueryI X排序(fields ...string) QueryI X字段(selector interface{}) QueryI X跳过(n int64) QueryI X设置批量处理数量(n int64) QueryI X设置不超时(n bool) QueryI X设置最大返回数(n int64) QueryI X取一条(result interface{}) error X取全部(result interface{}) error X取数量() (n int64, err error) X取预估数量() (n int64, err error) X去重(key string, result interface{}) error X取结果集() CursorI X执行命令(change Change, result interface{}) error X指定索引字段(hint interface{}) QueryI }
QueryI Query interface
type ReadPref ¶
type ReadPref struct { // MaxStaleness是允许服务器被认为适合选择的最大时间。从版本3.4开始支持。 // md5:01c3097a5d9a368b X最大延迟毫秒 int64 `json:"maxStalenessMS"` // 表示用户在读取操作上的偏好。 // 默认为PrimaryMode。 // md5:85d94814e6ac8eca Mode readpref.Mode `json:"mode"` }
ReadPref确定哪些服务器适合进行读取操作。 md5:d5ae507a40965ac9
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session 是一个结构体,表示 MongoDB 的逻辑会话 md5:a17367bc3a251e77
func (*Session) X中止事务 ¶
AbortTransaction 会取消此会话中的活动事务。如果此会话没有活动事务,或者事务已经提交或中止,此方法将返回错误。 md5:ca9bc056086304f0
func (*Session) X开始事务 ¶
func (s *Session) X开始事务(上下文 context.Context, 回调函数 func(事务上下文 context.Context) (interface{}, error), 可选选项 ...*opts.TransactionOptions) (interface{}, error)
StartTransaction 开始一个事务 预条件: - MongoDB服务器版本大于等于v4.0 - MongoDB服务器的拓扑结构不是单节点 同时需要注意:
- 确保回调中的所有操作将sessCtx作为上下文参数
- 如果不再使用session,别忘了调用EndSession
- 如果回调中的操作耗时超过(包括等于)120秒,这些操作将不会生效
- 如果回调中的操作返回qmgo.ErrTransactionRetry错误, 整个事务将会重试,因此这个事务必须是幂等的
- 如果回调中的操作返回qmgo.ErrTransactionNotSupported错误,
- 如果ctx参数中已经附加了一个Session,它将被此session替换。
md5:7a854b4c45212490
func (*Session) X结束Session ¶
EndSession 会终止任何现有的事务并关闭会话。 md5:2ee8849531868b7e
type UpdateResult ¶
type UpdateResult struct { X匹配数 int64 // 过滤器匹配到的文档数量。 md5:cac9d662a816ba41 X修改数 int64 // 该操作修改的文档数量。 md5:d5082cfa94d1e2ea X替换插入数 int64 // 由该操作上载的文档数量。 md5:0872523e362c0f10 X替换插入ID interface{} // upsert文档的_id字段,如果没有进行upsert操作则为nil。 md5:681ec03a43493d1c }
UpdateResult是从UpdateOne,UpdateMany和ReplaceOne操作返回的结果类型。 md5:fb4b146a87ac30bf