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)
}