c362271047
Filter deleted objects
45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/mongo/options"
|
|
"go.mongodb.org/mongo-driver/x/bsonx"
|
|
)
|
|
|
|
func createIndexes(db *mongo.Database) error {
|
|
opts := options.CreateIndexes().SetMaxTime(1000)
|
|
nodes := db.Collection("objects")
|
|
_, err := nodes.Indexes().CreateMany(context.Background(), []mongo.IndexModel{
|
|
{
|
|
Keys: bsonx.Doc{{"tags", bsonx.Int32(-1)}},
|
|
Options: (options.Index()).SetBackground(true).SetSparse(true),
|
|
},
|
|
{
|
|
Keys: bsonx.Doc{{"members.ref", bsonx.Int32(-1)}},
|
|
Options: (options.Index()).SetBackground(true).SetSparse(true),
|
|
},
|
|
}, opts)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := geoIndex(nodes, "location"); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func geoIndex(col *mongo.Collection, key string) error {
|
|
_, err := col.Indexes().CreateOne(
|
|
context.Background(),
|
|
mongo.IndexModel{
|
|
Keys: bsonx.Doc{{
|
|
Key: key, Value: bsonx.String("2dsphere"),
|
|
}},
|
|
Options: options.Index().SetSphereVersion(2).SetSparse(true).SetBackground(true),
|
|
},
|
|
)
|
|
return err
|
|
}
|