func Add2(item bson.M) {
configInfo := config.Config()
var (
err error
client *mongo.Client
collection *mongo.Collection
)
want, err := readpref.New(readpref.SecondaryMode) //表示只使用辅助节点
if err != nil {
checkErr(err)
}
wc := writeconcern.New(writeconcern.WMajority())
readconcern.Majority()
//链接mongo服务
opt := options.Client().ApplyURI(configInfo["dburl"].(string))
opt.SetLocalThreshold(3 * time.Second) //只使用与mongo操作耗时小于3秒的
opt.SetMaxConnIdleTime(5 * time.Second) //指定连接可以保持空闲的最大毫秒数
opt.SetMaxPoolSize(200) //使用最大的连接数
opt.SetReadPreference(want) //表示只使用辅助节点
opt.SetReadConcern(readconcern.Majority()) //指定查询应返回实例的最新数据确认为,已写入副本集中的大多数成员
opt.SetWriteConcern(wc) //请求确认写操作传播到大多数mongod实例
if client, err = mongo.Connect(getContext(), opt); err != nil {
checkErr(err)
}
//判断服务是否可用
if err = client.Ping(getContext(), readpref.Primary()); err != nil {
checkErr(err)
}
//选择数据库和集合
collection = client.Database(configInfo["dbDatabase"].(string)).Collection(configInfo["dbCollection"].(string))
//插入一条数据
if _, err = collection.InsertOne(getContext(), item); err != nil {
checkErr(err)
}
}