62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
// 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
|
|
}
|