package main
import (
"context"
"fmt"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
func close(client *mongo.Client, ctx context.Context,
cancel context.CancelFunc) {
defer cancel()
defer func() {
if err := client.Disconnect(ctx); err != nil {
panic(err)
}
}()
}
func connect(uri string) (*mongo.Client, context.Context,
context.CancelFunc, error) {
ctx, cancel := context.WithTimeout(context.Background(),
30 * time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri))
return client, ctx, cancel, err
}
func deleteOne(client *mongo.Client, ctx context.Context,
dataBase, col string, query interface{})
(result *mongo.DeleteResult, err error) {
collection := client.Database(dataBase).Collection(col)
result, err = collection.DeleteOne(ctx, query)
return
}
func deleteMany(client *mongo.Client, ctx context.Context,
dataBase, col string, query interface{})
(result *mongo.DeleteResult, err error) {
collection := client.Database(dataBase).Collection(col)
result, err = collection.DeleteMany(ctx, query)
return
}
func main() {
if err != nil {
panic(err)
}
defer close(client, ctx, cancel)
query := bson.D{
{"maths", bson.D{{"$gt", 60}}},
}
result, err := deleteOne(client, ctx, "gfg", "marks", query)
fmt.Println("No.of rows affected by DeleteOne()")
fmt.Println(result.DeletedCount)
query = bson.D{
{"science", bson.D{{"$gt", 0}}},
}
result, err = deleteMany(client, ctx, "gfg", "marks", query)
fmt.Println("No.of rows affected by DeleteMany()")
fmt.Println(result.DeletedCount)
}