"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"
"go.mongodb.org/mongo-driver/mongo/writeconcern"
rootPEM, err := ioutil.ReadFile(filename)
roots := x509.NewCertPool()
if ok := roots.AppendCertsFromPEM([]byte(rootPEM)); !ok {
fmt.Printf("get certs from %s fail!\n", filename)
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
clientOpts := options.Client().ApplyURI("mongodb://<user>:<password>@mongoreplicae9d7d321****0.mongodb.ivolces.com:3717,mongoreplicae9d7d321****1.mongodb.ivolces.com:3717/?authSource=admin&replicaSet=rs-mongo-replica-e9d7d321****&retryWrites=true&ssl=true")
clientOpts.SetReadPreference(readpref.Secondary())
clientOpts.SetWriteConcern(writeconcern.New(writeconcern.WMajority(), writeconcern.J(true), writeconcern.WTimeout(1000)))
clientOpts.SetTLSConfig(tlsConfig)
client, err := mongo.Connect(context.TODO(), clientOpts)
fmt.Println("connect failed!")
fmt.Println("connect successful!")
if err = client.Disconnect(context.TODO()); err != nil {
fmt.Println("disconnect failed!")
fmt.Println("disconnect successful!")
if err = client.Ping(context.TODO(), nil); err != nil {
fmt.Println("ping failed!")
fmt.Println("ping successful!")
collection := client.Database("baz").Collection("qux")
res, err := collection.InsertOne(context.Background(), bson.M{"hello": "world"})
fmt.Println("insert result failed!")
fmt.Printf("insert result: %v\n", res)
filter := bson.D{{"_id", res.InsertedID}}
if err := collection.FindOne(context.Background(), filter).Decode(&result); err != nil {
fmt.Println("find failed!")
fmt.Printf("result: %v\n", result)