123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- package models
- import (
- "context"
- "encoding/json"
- "errors"
- "eta/eta_api/utils"
- "eta/eta_api/utils/mgodb"
- "fmt"
- )
- func init() {
- if utils.MgoUrlData != `` {
- var mgoConfig mgodb.MgoConfig
- if e := json.Unmarshal([]byte(utils.MgoUrlData), &mgoConfig); e != nil {
- panic("mongodb链接失败,Err:" + e.Error())
- return
- }
- mgoCli := mgodb.MgoNewClient(mgoConfig)
- utils.MgoDataCli = mgoCli
- utils.MgoDataDbName = mgoConfig.Database
- //result, err := TestMgoFindOne("data_ths", bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"})
- //fmt.Println(time.Now())
- //result, err := TestMgoFindOne("data_wind", bson.M{"edbcode": "s0033227", "datatime": "2007-12-29"})
- //fmt.Println(time.Now())
- //
- //fmt.Println(err)
- //fmt.Println(result)
- }
- }
- // TestMgoFindOne
- // @Description: 获取单条数据
- // @author: Roc
- // @datetime 2024-04-25 15:44:07
- // @param colName string 集合名词:`data_ths`
- // @param whereParams interface{} bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
- // @return result interface{}
- // @return err error
- func TestMgoFindOne(colName string, whereParams interface{}) (result interface{}, err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- if utils.MgoDataCli == nil {
- err = errors.New("mongodb连接失败")
- return
- }
- db := utils.MgoDataCli.Database("hz_data")
- coll := db.Collection("data_ths")
- ctx := context.TODO()
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- //err = coll.Find(ctx, whereParams).One(&result)
- err = coll.Find(ctx, whereParams).All(&result)
- return
- }
- // 创建集合
- //func MgoCreateCollection(collectionName string) (err error) {
- // ctx := context.TODO()
- //
- // mgoClient := mgodb.MgoNewClient()
- //
- // defer func() {
- // mgoClient.Close(ctx)
- // }()
- //
- // colName := collectionName
- // err = mgoClient.Database("hz_data").CreateCollection(ctx, colName)
- // return
- //}
- // 批量新增多条数据
- func MgoBatchInsertData(colName string, dataList interface{}) (err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- _, err = coll.Collection.InsertMany(ctx, dataList)
- if err != nil {
- fmt.Println("InsertMany:Err:" + err.Error())
- return
- }
- return
- }
- // 插入单条数据
- func MgoInsertData(colName string, dataItem interface{}) (insertedID interface{}, err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- result, err := coll.Collection.InsertOne(ctx, dataItem)
- if err != nil {
- return
- }
- insertedID = result.InsertedID
- return
- }
- /*
- 删除数据
- colName := `data_gl`
- whereParams := bson.M{"edbcode": "s0033227"}
- err := MgoRemove(colName, whereParams)
- */
- func MgoRemove(colName string, whereParams interface{}) (err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- err = coll.Remove(ctx, whereParams)
- return
- }
- /*
- 删除多条数据
- colName := `data_gl`
- whereParams := bson.M{"edbcode": "s0033227"}
- err := MgoRemoveAll(colName, whereParams)
- */
- func MgoRemoveAll(colName string, whereParams interface{}) (count int64, err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- res, err := coll.RemoveAll(ctx, whereParams)
- if err != nil {
- fmt.Println("RemoveAll Err:", err.Error())
- return
- }
- count = res.DeletedCount
- return
- }
- /*
- 修改单条数据
- colName := `data_ths`
- whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
- params := bson.M{"$set": bson.M{"value": "1000"}}
- */
- func MgoUpdateData(colName string, params, whereParams interface{}) (err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- err = coll.UpdateOne(ctx, whereParams, params)
- return
- }
- /*
- 获取单条数据
- colName := `data_ths`
- whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
- */
- func MgoFindOne(colName string, whereParams interface{}) (result interface{}, err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- err = coll.Find(ctx, whereParams).One(&result)
- return
- }
- /*
- 分页获取数据
- colName := `data_ths`
- whereParams := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
- sort:="-weight"
- skip:0
- limit:10
- */
- func MgoBatchFind(colName, sort string, whereParams interface{}, skip, limit int64) (list []interface{}, err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- coll.Close(ctx)
- }()
- err = coll.Find(ctx, whereParams).Sort(sort).Skip(skip).Limit(limit).All(&list)
- return
- }
- /*
- MgoUpsertData
- 更新插入数据-数据存在即更新, 否则新增
- colName := `data_ths`
- filter := bson.M{"edbcode": "s0033227", "datatime": "2015-12-04"}
- replacement := bson.M{"edb_info_id":0,"edb_code":m.EdbCode,"data_time":d.DataTime,"value":f,"create_time":now,"modify_time":now,"data_timestamp": stamp}
- */
- func MgoUpsertData(colName string, filter, replacement interface{}) (err error) {
- if colName == "" {
- err = errors.New("集合名称不可为空")
- return
- }
- ctx := context.TODO()
- coll, err := mgodb.MgoGetColl(colName)
- if err != nil {
- fmt.Println("MgoGetColl Err:", err.Error())
- return
- }
- defer func() {
- _ = coll.Close(ctx)
- }()
- _, err = coll.Upsert(ctx, filter, replacement)
- return
- }
|