Skip to content

Generic Collection ​

mongox provides a generic Collection object, which allows you to interact with MongoDB collections using method chaining, making data operations more convenient.

Creating a Generic Collection ​

go
type User struct {
  mongox.Model `bson:",inline"`
  Name         string `bson:"name"`
  Age          int    `bson:"age"`
}

// Example code for reference
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")

Using the mongox.NewCollection function, we can specify the generic type and create a generic Collection object. This allows us to perform operations on documents of type User using the userColl object.

Global plugins registered via the database object are automatically passed to the userColl object, so the global plugins will apply to operations on userColl.