简体   繁体   中英

How add option `writeConcern` in mongo-go-driver?

I do not understand how to add recording parameters for MongoDB using mongo-go-driver

Example request

c.client.Database(MONGO_DATABASE).Collection(*packet.ID).InsertMany(nil, packet.Item, opt)

How to specify the necessary parameters in opt ?

VERSION 1.0

In MongoDB Go driver production release you can set writeConcern as below:

import (    
    "go.mongodb.org/mongo-driver/mongo/options"     
    "go.mongodb.org/mongo-driver/bson"  
    "go.mongodb.org/mongo-driver/mongo"     
    "go.mongodb.org/mongo-driver/mongo/writeconcern" 
)

mongoURI := "mongodb://server:port/"
opts := options.Client().ApplyURI(mongoURI).SetWriteConcern(writeconcern.New(writeconcern.WMajority()))

client, err := mongo.NewClient(opts)
if err != nil {
    panic(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
err = client.Connect(ctx)
if err != nil {
    panic(err)
}

collection := client.Database("database").Collection("collection")

See also:

VERSION 0.0.16

Using mongo-go-driver , you can set a write concern option as below example:

import(
  "github.com/mongodb/mongo-go-driver/bson"
  "github.com/mongodb/mongo-go-driver/core/writeconcern"
  "github.com/mongodb/mongo-go-driver/mongo"
  "github.com/mongodb/mongo-go-driver/mongo/collectionopt"
)

// Example document 
document := bson.VC.DocumentFromElements(
                 bson.EC.SubDocumentFromElements(
                   "foo",
                   bson.EC.Int32("bar", 101),
                 ),
               )

// Set majority write concern
wMajority := writeconcern.New(writeconcern.WMajority())

database := client.Database("database")
collection := database.Collection("collection", collectionopt.WriteConcern(wMajority))

_, err = collection.InsertOne(context.Background(), document)

Can also use W(int) to specify an arbitrary number of mongod instances. See more writeconcern/writeconcern.go

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM