// Package database define database operation functions package database import ( "context" "fmt" "wave_record/go-comtrade" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.uber.org/zap" ) // StorageComtradeIntoMongoDB return the result of storing comtrade data into mongoDB func StorageComtradeIntoMongoDB(ctx context.Context, comtradeData *comtrade.Comtrade, collection *mongo.Collection, logger *zap.Logger) error { comtradeBson, err := bson.Marshal(comtradeData) if err != nil { logger.Error("bson marshal comtrade data failed", zap.Error(err)) return err } _, err = collection.InsertOne(ctx, comtradeBson) if err != nil { logger.Error("insert comtrade data into mongoDB failed", zap.Error(err)) return err } return nil } // TODO 增加mongodb查找示例 // var key, value string // doc := bson.D{} // 创建一个空的bson.D文档 // // 添加键值对 // doc = append(doc, bson.E{Key: key, Value: value}) // // FindComtradeIntoMongoDB return the query results of comtrade data with specified conditions in MongoDB func FindComtradeIntoMongoDB(ctx context.Context, filter bson.D, collection *mongo.Collection, logger *zap.Logger) ([]*comtrade.Comtrade, error) { var results []*comtrade.Comtrade cur, err := collection.Find(ctx, filter, nil) if err != nil { logger.Error("") } for cur.Next(ctx) { var element comtrade.Comtrade err := cur.Decode(&element) if err != nil { fmt.Println(err) } results = append(results, &element) } if err := cur.Err(); err != nil { fmt.Println(err) } cur.Close(ctx) return results, nil }