package
0.0.0-20240920171339-3076bdaa6576
Repository: https://github.com/leeprince/goinfra.git
Documentation: pkg.go.dev
# README
MongoDB
概念
_id
在MongoDB中,每个文档必须包含一个唯一的_id字段。 管理此字段的两个选项是:
- 自己管理此字段,确保您使用的每个值都是唯一的。
- 让驱动程序自动生成唯一的ObjectId值。驱动程序为您未显式指定_id的文档生成唯一的ObjectId值。 除非你提供强有力的唯一性保证,否则MongoDB建议你让驱动程序自动生成_id值。
依靠驱动程序自动维护_id的应用
插入模型:不包含默认主键_id(MongoDB驱动程序mongDB默认会自动维护主键_id)
查询模型(mongDB官网库支持嵌入字段,但是必须要添加bson:"bson:,inline
):包含默认主键_id; 用于查询时能够返回默认主键_id
固定集合
MongoDB的固定集合(Fixed Collection)是一种特殊类型的集合,它有以下影响:
- 固定大小:固定集合有一个预定义的固定大小,一旦达到该大小,新的插入操作将替换最早的文档。这意味着固定集合始终保持固定大小,不会无限增长。
- 自动覆盖:当固定集合达到最大大小时,新的插入操作将自动覆盖最早的文档。这可以确保固定集合中始终保持最新的数据。
- 适用场景:固定集合适用于需要保留最新数据并且不需要保留历史数据的场景。例如,日志记录或传感器数据等实时数据收集应用程序。
- 性能优化:固定集合的固定大小和自动覆盖特性可以提供更好的性能,因为它们避免了文档的移动和碎片化,减少了存储和查询的开销。
需要注意的是,固定集合并不适用于所有场景。如果您需要保留历史数据、支持复杂的查询或需要动态增长的集合大小,那么普通的集合可能更适合您的需求。
time.Time
mongoDB 存储time.Time是跟时区有关的。即存储是会转为默认时区,读取时转为当前时区
bson
使用场景 mongDB官网库支持嵌入字段(通过嵌入结构体的方式直接嵌入字段),但是必须要添加
bson:"bson:,inline
说明:空或零值代表:false、0、""、nil指针、nil接口、长度为0的数组、切片、映射。
在 Go 语言中,使用 bson 标签可以为结构体字段提供与 MongoDB 文档的映射关系。以下是 bson 标签中常用的选项(,inline ,minsize ,omitempty)及其作用:
- ,inline:bson:",inline" 表示将嵌入的结构体字段展开,将其字段直接嵌入到当前结构体中,而不是作为嵌入结构体的子文档。这样可以避免在 MongoDB 中创建额外的嵌入文档。
- ,minsize:bson:"fieldname,minsize" 表示在序列化时,如果字段的值为空或零值,则不将其包含在生成的 BSON 文档中。这可以减小文档的大小,节省存储空间。
- ,omitempty:bson:"fieldname,omitempty" 表示在序列化时,如果字段的值为空或零值,则不将其包含在生成的 BSON 文档中。与 minsize 类似,这也可以减小文档的大小,节省存储空间。
注意:以上选项存在前导的逗号,
这些选项可以根据需要进行组合使用,以满足定的需求。注意,bson 标签只对使用 MongoDB 官方库进行序列化和反序列化时起作用,对于其他库可能有不同的标签或选项。
说明:json 标签只有 omitempty 选项,但是默认是:inline