root@jack-VirtualBox:~/mongodb/mongod# cat db/student.go package db import ( "context" "fmt" "log" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) type Student struct { Id int32 `json:"id"` Name string `json:"name"` Age int `json:"age"` Height int `json:"height"` Weight int `json:"weight"` } // GetList 获取全量的数据 func (s *Student) GetList(filter interface{}, objs interface{}) error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return err } cur, err := collection.Find(context.Background(), filter) if err != nil { fmt.Println(err) return err } if err := cur.Err(); err != nil { fmt.Println(err) return err } err = cur.All(context.Background(), &objs) if err != nil { fmt.Println(err) return err } cur.Close(context.Background()) log.Println("collection.Find curl.All: ", objs) return nil } // AddOne 新增一条数据 func (s *Student) AddOne() (*mongo.InsertOneResult, error) { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return nil, err } objId, err := collection.InsertOne(context.TODO(), *s) if err != nil { log.Println(err) return nil, err } log.Println("录入数据成功,objId:", objId) return objId, nil } // EditOne 编辑一条数据 func (s *Student) EditOne(filter interface{}) error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return err } update := bson.M{"$set": s} updateResult, err := collection.UpdateOne(context.Background(), filter, update) if err != nil { fmt.Println(err) return err } log.Println("collection.UpdateOne:", updateResult) return nil } // 更新数据 - 存在更新,不存在就新增 func (s *Student) Update(filter interface{}) error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return err } update := bson.M{"$set": s} updateOpts := options.Update().SetUpsert(true) updateResult, err := collection.UpdateOne(context.Background(), filter, update, updateOpts) if err != nil { fmt.Println(err) } log.Println("collection.UpdateOne:", updateResult) return nil } // 删除一条匹配的数据 func (s *Student) Del(filter interface{}) (*mongo.DeleteResult, error) { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return nil, err } deleteResult, err := collection.DeleteOne(context.Background(), filter) if err != nil { fmt.Println(err) return nil, err } fmt.Println("collection.DeleteOne:", deleteResult) return deleteResult, nil } // 删除全部匹配的数据 func (s *Student) DelAll(filter interface{}) (*mongo.DeleteResult, error) { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return nil, err } deleteResult, err := collection.DeleteMany(context.Background(), filter) if err != nil { fmt.Println(err) return nil, err } log.Println("collection.DeleteOne:", deleteResult) return deleteResult, nil } // 删除整个文档 func (s *Student) DelTable() error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return nil } err = collection.Drop(context.Background()) if err != nil { fmt.Println(err) } return nil } // Sectle 模糊查询 // bson.M{"name": primitive.Regex{Pattern: "深入"}} func (s *Student) Sectle(filter interface{}, objs interface{}) error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return err } cur, err := collection.Find(context.Background(), filter) if err != nil { fmt.Println(err) return err } if err := cur.Err(); err != nil { fmt.Println(err) } ss := []Student{} for cur.Next(context.Background()) { var s Student if err = cur.Decode(&s); err != nil { fmt.Println(err) } //log.Println("collection.Find name=primitive.Regex{xx}: ", s) ss = append(ss, s) } cur.Close(context.Background()) objs = ss return nil } // 统计collection的数据总数 func (s *Student) Count(filter interface{}) (int, error) { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return 0, err } count, err := collection.CountDocuments(context.Background(), filter) if err != nil { fmt.Println(count) } log.Println("collection.CountDocuments:", count) return int(count), nil } // 准确搜索一条数据 func (s *Student) GetOne(filter interface{}) error { collection, err := Get_collecton(TBL_STUDENT_NAME) if err != nil { return err } err = collection.FindOne(context.Background(), filter).Decode(s) if err != nil { fmt.Println(err) return err } log.Println("collection.FindOne: ", s) return nil } root@jack-VirtualBox:~/mongodb/mongod#