泛型的 Collection
mongox 提供了泛型的 Collection 对象,它支持通过链式调用来操作 MongoDB 的集合,更加方便的进行数据操作。
创建泛型的 Collection
go
type User struct {
mongox.Model `bson:"inline"`
Name string `bson:"name"`
Age int `bson:"age"`
}
// 示例代码,仅供参考
func newMongoClient() (*mongo.Client, error) {
client, err := mongo.Connect(options.Client().ApplyURI("mongodb://localhost:27017").SetAuth(options.Credential{
Username: "test",
Password: "test",
AuthSource: "db-test",
}))
if err != nil {
return nil, err
}
err = client.Ping(context.Background(), readpref.Primary())
if err != nil {
panic(err)
}
return client, nil
}
mongoClient, err := newMongoClient()
if err != nil {
panic(err)
}
client := mongox.NewClient(mongoClient, &mongox.Config{})
database := client.NewDatabase("db-test")
userColl := mongox.NewCollection[User](database, "users")通过 mongox.NewCollection 函数,我们可以指定泛型参数并创建一个泛型的 Collection 对象。这样我们就可以使用 userColl 对象来操作 User 类型的文档了。
通过 database 对象注册的全局插件会传递给 userColl 对象,因此全局插件会对 userColl 对象的操作生效。