PowerEngine/wave_record/database/mongodb_operator.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
}