update

package
v1.2.6 Latest Latest
Warning

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

Go to latest
Published: Jan 7, 2026 License: Apache-2.0 Imports: 9 Imported by: 2

Documentation

Overview

update 包提供MongoDB更新操作的相关功能,包括更新条件构建和字段选择

Index

Constants

View Source
const (
	UpdateTypeSet         = "$set"         // 设置字段值
	UpdateTypeInc         = "$inc"         // 增加/减少字段值
	UpdateTypeUnset       = "$unset"       // 删除字段
	UpdateTypeSetOnInsert = "$setOnInsert" // 仅在插入时设置字段值
)

更新操作类型常量定义

View Source
const MongodbFieldSplit = "."

MongodbFieldSplit MongoDB字段分隔符

Variables

This section is empty.

Functions

This section is empty.

Types

type Selector added in v0.0.3

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

Selector 字段选择器结构体 用于在创建、更新和查询操作中指定要包含或排除的字段

func (*Selector) Has added in v0.0.4

func (this *Selector) Has(key string) bool

Has 检查指定字段是否被选择 参数 key: 字段名(结构体字段名或数据库字段名) 返回值: true表示字段被选择,false表示字段被排除

func (*Selector) Omit added in v0.0.3

func (this *Selector) Omit(columns ...string) bool

Omit 设置要排除的字段(排除模式) 参数 columns: 要排除的字段名列表 返回值: true表示设置成功,false表示当前选择器类型不兼容(已处于选择模式) 注意:排除模式和选择模式不能同时使用

func (*Selector) Projection added in v0.0.3

func (this *Selector) Projection(sch *schema.Schema) map[string]bool

Projection 获取字段投影映射,支持模型字段名到数据库字段名的映射 参数 sch: 可选的模型schema,用于字段名映射(结构体字段名到数据库字段名) 返回值: 字段投影映射,键为数据库字段名,值为是否选择 注意:在FindOneAndUpdate等操作中使用时,需要将排除模式转换为选择模式

func (*Selector) Release added in v0.0.3

func (this *Selector) Release()

Release 释放选择器资源,重置为初始状态

func (*Selector) Select added in v0.0.3

func (this *Selector) Select(columns ...string) bool

Select 设置要选择的字段(选择模式) 参数 columns: 要选择的字段名列表 返回值: true表示设置成功,false表示当前选择器类型不兼容(已处于排除模式) 注意:选择模式和排除模式不能同时使用

type SelectorType added in v0.0.3

type SelectorType int8

SelectorType 字段选择器类型枚举

const (
	SelectorTypeNone   SelectorType = iota // 无选择(默认)
	SelectorTypeOmit   SelectorType = iota // 排除模式:排除指定字段
	SelectorTypeSelect SelectorType = iota // 选择模式:仅选择指定字段
)

type SetOnInsert

type SetOnInsert interface {
	// SetOnInsert 返回仅在插入时设置的字段映射
	// 返回值: 字段映射和可能的错误
	SetOnInsert() (map[string]any, error)
}

type Update

type Update map[string]bson.M

func Build

func Build(i any, sch *schema.Schema, filter *Selector, includeZeroValue bool) (update Update, upsert bool, err error)

Build 将各种类型(map、bson.M、Struct)转换为Update 参数 i: 要转换的值,可以是map、bson.M、Struct或Update类型 参数 sch: 模型schema,用于字段名映射 参数 filter: 字段选择器,用于指定要更新的字段 参数 includeZeroValue: 是否包含零值字段 返回值: Update实例、是否需要upsert、可能的错误

func BuildWithStmt added in v1.2.2

func BuildWithStmt(stmt iStmt) (update Update, upsert bool, err error)

BuildWithStmt 使用语句构建Update 参数 stmt: 语句接口,提供构建Update所需的信息 返回值: Update实例、是否需要upsert、可能的错误

func New

func New() Update

New 创建一个新的Update实例 返回值: 空的Update实例

func NewFromMap added in v1.1.0

func NewFromMap(v map[string]any) Update

NewFromMap 从map创建Update实例 参数 v: 包含字段名和值的map 返回值: 设置了字段的Update实例

func (Update) Any

func (u Update) Any(t, k string, v interface{})

Any 执行任意类型的更新操作 参数 t: 更新操作类型(如$set, $inc) 参数 k: 字段名 参数 v: 字段值

func (Update) Convert

func (u Update) Convert(t string, i interface{}) error

Convert 将结构体转换为指定类型的更新操作 参数 t: 更新操作类型 参数 i: 结构体实例 返回值: 转换过程中的错误

func (Update) Get added in v1.1.0

func (u Update) Get(opt string, k string) (v any, ok bool)

Get 获取更新操作中指定字段的值 参数 opt: 更新操作类型(如$set) 参数 k: 字段名 返回值: 字段值和是否存在

func (Update) Has

func (u Update) Has(opt string, filed string) bool

Has 检查更新操作中是否包含指定的字段 参数 opt: 更新操作类型(如$set) 参数 filed: 字段名 返回值: true表示包含该字段

func (Update) Inc

func (u Update) Inc(k string, v interface{})

Inc 增加/减少字段值($inc操作) 参数 k: 字段名 参数 v: 增加/减少的值(正数增加,负数减少)

func (Update) Max

func (u Update) Max(k string, v interface{})

Max 设置字段的最大值($max操作) 仅当新值大于当前值时才更新 参数 k: 字段名 参数 v: 比较值

func (Update) Min

func (u Update) Min(k string, v interface{})

Min 设置字段的最小值($min操作) 仅当新值小于当前值时才更新 参数 k: 字段名 参数 v: 比较值

func (Update) Pop

func (u Update) Pop(k string, v interface{})

Pop 从数组中删除元素($pop操作) 参数 k: 字段名 参数 v: 1表示删除最后一个元素,-1表示删除第一个元素

func (Update) Projection

func (u Update) Projection() bson.M

Projection 生成投影 返回值: 包含更新字段的投影(仅包含$set和$inc中的字段)

func (Update) Pull

func (u Update) Pull(k string, v interface{})

Pull 从数组中删除匹配的元素($pull操作) 参数 k: 字段名 参数 v: 匹配条件

func (Update) Push

func (u Update) Push(k string, v interface{})

Push 向数组中添加元素($push操作) 参数 k: 字段名 参数 v: 要添加的元素

func (Update) Remove added in v1.1.0

func (u Update) Remove(opt string, k string)

Remove 从更新操作中删除指定字段 参数 opt: 更新操作类型(如$set) 参数 k: 字段名

func (Update) Save added in v1.2.3

func (u Update) Save(vs map[string]any)

Save 批量设置字段值 参数 vs: 包含字段名和值的map

func (Update) Set

func (u Update) Set(k string, v interface{})

Set 设置字段值($set操作) 参数 k: 字段名 参数 v: 字段值

func (Update) SetOnInsert added in v1.2.3

func (u Update) SetOnInsert(k string, v interface{})

SetOnInsert 仅在插入时设置字段值($setOnInsert操作) 参数 k: 字段名 参数 v: 字段值

func (Update) String

func (u Update) String() string

String 将Update转换为JSON字符串 返回值: JSON字符串表示

func (Update) Transform added in v0.0.4

func (u Update) Transform(sch *schema.Schema) Update

Transform 将结构体字段名转换为数据库字段名 参数 sch: 模型schema 返回值: 转换后的Update实例

func (Update) Unset added in v1.0.5

func (u Update) Unset(k string)

Unset 删除字段($unset操作) 参数 k: 字段名

Jump to

Keyboard shortcuts

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