gpt4 book ai didi

mongodb - 如何在Mongodb中将枚举存储为字符串而不是int

转载 作者:行者123 更新时间:2023-12-03 10:09:08 25 4
gpt4 key购买 nike

我正在使用grpc + golang + mongodb,并且我有以下proto文件。

enum InventoryType {
LARGE = 0;
SMALL = 1;
}
我的代码:
import (
"context"

"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"

"inventory-service/pb"
)

func (i *Inventory) CreateInventory(ctx context.Context, req *pb.CreateInventoryRequest) (*pb.CreateInventoryResponse, error) {
inventory := req.GetInventory()

data := pb.Inventory{
Inventory: inventory.GetInventory(),
}

mctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
client, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://localhost:27017"))

collection := client.Database("test_db").Collection("test_collection")
collection.InsertOne(mctx, data)

return &pb.CreateInventoryResponse{}, nil
}
当我使用golang将枚举保存到mongodb时,它将保存int值0、1而不是'LARGE','SMALL',有关如何保存字符串的任何想法?

最佳答案

Protobuf用于通信,而不用于数据库建模。您不应该使用protobuf生成的文件保存在数据库中。
而是创建一个单独的类型来对要存储在数据库中的文档进行建模,您可以在其中存储枚举的字符串表示形式,并将其存储在数据库中。
例如:

type MyData {
Inventory string `bson:"inventory"`
}
并使用它:
data := MyData{
Inventory: inventory.GetInventory().String(),
}

关于mongodb - 如何在Mongodb中将枚举存储为字符串而不是int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66004206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com