2021-08-09 03:20:27 +00:00
|
|
|
package mongodb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
2024-07-09 10:06:15 +00:00
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
2021-08-09 03:20:27 +00:00
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
|
|
)
|
|
|
|
|
|
|
|
// CreateIndex ...
|
|
|
|
func CreateIndex(colName string, ind mongo.IndexModel) {
|
|
|
|
// Get collection
|
|
|
|
col := db.Collection(colName)
|
|
|
|
if col == nil {
|
|
|
|
fmt.Printf("Collection %s not existed", colName)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
opts := options.CreateIndexes().SetMaxTime(time.Minute * 10)
|
|
|
|
_, err := col.Indexes().CreateOne(context.Background(), ind, opts)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Printf("Index collection %s err: %v", col.Name(), err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NewIndexKey ...
|
|
|
|
func NewIndexKey(key ...string) mongo.IndexModel {
|
2024-07-09 10:06:15 +00:00
|
|
|
var doc bson.D
|
2021-08-09 03:20:27 +00:00
|
|
|
for _, s := range key {
|
2024-07-09 10:06:15 +00:00
|
|
|
e := bson.E{
|
2021-08-09 03:20:27 +00:00
|
|
|
Key: s,
|
2024-07-09 10:06:15 +00:00
|
|
|
Value: 1,
|
2021-08-09 03:20:27 +00:00
|
|
|
}
|
|
|
|
if strings.HasPrefix(s, "-") {
|
2024-07-09 10:06:15 +00:00
|
|
|
e = bson.E{
|
2021-08-09 03:20:27 +00:00
|
|
|
Key: strings.Replace(s, "-", "", 1),
|
2024-07-09 10:06:15 +00:00
|
|
|
Value: -1,
|
2021-08-09 03:20:27 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
doc = append(doc, e)
|
|
|
|
}
|
|
|
|
|
|
|
|
return mongo.IndexModel{Keys: doc}
|
2024-07-09 10:06:15 +00:00
|
|
|
}
|