我在将 ObjectId 插入文档时遇到问题。
这是收藏发售模型
type Sale struct {
ID primitive.ObjectID `bson:"_id,omitempty"`
Client primitive.ObjectID `bson:"client"`
Items []primitive.ObjectID `bson:"items"`
Amounts []int `bson:"amounts"`
Cost float64 `bson:"cost"`
Payment bool `bson:"payment"`
Date time.Time `bson:"date"`
}
在生成插入之前,我确保
Sale.Client
具有有效的 ObjectId 值,但是当我执行此插入时,该值在表中变为二进制。
例如:
ObjectId('67103588b9138d78d5ef09a2')
Binary.createFromBase64('ZxA1iLkTjXjV7wmi', 0)
这是插入代码
func CommonInsert(collection string, ctx context.Context, model interface{}) error {
conn, err := config.GetDbConnection(ctx)
if err != nil {
return err
}
c := conn.Database("teste").Collection(collection)
_, err = c.InsertOne(ctx, model)
if err != nil {
return err
}
return nil
}
我为插入生成了真实的模拟数据,但我仍然无法强制将数据转换为 ObjectId
primitive.ObjectID
不被识别为 MongoDB ObjectId 类型(而是作为 primitive.ObjectID
的基础类型的普通字节数组)时,它可以归结为:
primitive.ObjectID
作为其基础类型),例如 type MyID primitive.ObjectID
目前有一个 beta v2 主要版本的驱动程序,当然还有 v1.1 版本。确保不要混合使用 2 个主要版本:要么使用 v1,要么使用 beta v2。