mongorm

Indexes

MongORM provides field-based index helpers so users can create indexes without hardcoding BSON field names.

Quick Start

orm := mongorm.New(&ToDo{})

// 2dsphere index for geo queries
_, err := orm.Ensure2DSphereIndex(ctx, ToDoFields.Location)
if err != nil {
    panic(err)
}

// one-call geo defaults: 2dsphere + optional support index
_, err = orm.EnsureGeoDefaults(
    ctx,
    ToDoFields.Location,
    []bson.E{mongorm.Asc(ToDoFields.CreatedAt)},
)
if err != nil {
    panic(err)
}

// named compound index
model := mongorm.NamedIndexModelFromKeys(
    "todo_text_count_idx",
    mongorm.Asc(ToDoFields.Text),
    mongorm.Desc(ToDoFields.Count),
)

_, err = orm.EnsureIndex(ctx, model)
if err != nil {
    panic(err)
}

Key Builders

Use these helpers to avoid hardcoded field names:

Each helper uses field.BSONName() internally.

Index Model Builders

Execution Methods

Create Multiple Indexes

models := []mongo.IndexModel{
    mongorm.IndexModelFromKeys(mongorm.Text(ToDoFields.Text)),
    mongorm.UniqueIndexModelFromKeys(mongorm.Asc(ToDoFields.ID)),
}

names, err := orm.EnsureIndexes(ctx, models)
if err != nil {
    panic(err)
}
fmt.Println(names)

Back to Documentation Index README