用Golang和mongodb交互之插入数据到mongodb数据库

2020-03-03linuxmongodb

定义模型

定义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")]
Last Updated 8/21/2026, 3:57:15 AM