用Golang和mongodb交互之插入数据到mongodb数据库
定义模型
定义go struct,并定义在mongodb中的字段,即tag
type User struct{
ID primitive.ObjectID `bson:"_id"`
Name string `bson:"name"`
Sex string `bson:"sex"`
Age uint8 `bson:"age"`
Phone string `bson:"phone"`
}
单条插入
用获取client,指定要连接的数据库名称,集合名称
func InsertOneData(user User{})(interface{}, error) {
if res, err := client.Database("test").Collection("t1").InsertOne(context.TODO(), user); err != nil {
return nil, err
} else {
return res.InsertedID, nil
}
}
调用也很简单
func main(){
if res, err := InsertOneData;err != nil{
fmt.Println(err)
}else{
fmt.Println(res.InsertedID)
}
}
数据插入成功,会返回插入数据的objectid
ObjectId("5e03720a9836b3792c0283a5")
多条插入
func InsertOneData(user []interface{}) (interface{}, error) {
if res, err := client.Database("test").Collection("t1").InsertMany(context.TODO(), user); err != nil {
return nil, err
} else {
return res.InsertedIDs, nil
}
}
调用也很简单
func main() {
if res, err := InsertOneData([]interface{}{
User{ID: primitive.NewObjectID(), Name: "Alice", Sex: "female", Age: 21, Phone: "45513"},
User{ID: primitive.NewObjectID(), Name: "Bob", Sex: "male", Age: 25, Phone: "74341"},
}); err != nil {
fmt.Println(err)
} else {
fmt.Println(res)
}
}
调用成功,会返回一个接口切片
[ObjectID("5e5df36f2f4db7d87b9fe5ba") ObjectID("5e5df36f2f4db7d87b9fe5bb")]