gpt4 book ai didi

mongodb - mgo NewObjectId 在插入时损坏

转载 作者:数据小太阳 更新时间:2023-10-29 03:06:55 25 4
gpt4 key购买 nike

如果我在 mgo 中为文档生成一个新的对象 ID:

obId := bson.NewObjectId()

然后插入它,它最终在 mongo 中(通过 cli 查看)作为

"_id" : "U�`�\u0006@�\rU\u0000\u0000\u0001"

应该是什么时候

"_id" : ObjectId("559a47643d9827f0d9405420")

如果我尝试更新我生成 id 的现有文档,情况也是如此

obId := bson.ObjectIdHex(stringId)

它仍然被序列化为损坏的格式。

我尝试插入的结构如下所示:

type MyStruct struct {
Id bson.ObjectId `bson:"_id,omitempty" json:"id"`
...
}

最佳答案

表示 "U�`�\u0006@�\rU\u0000\u0000\u0001" 清楚地表明 ObjectId 作为字符串发送到数据库,而不是作为正确类型的对象标识。之前的每个此类案例都是应用程序端的代码路径错误地显式传递字符串。我建议调查在该集合中插入对象的每个代码路径,如果您找不到将其作为实际字符串发送的情况,则尝试创建一个复制器并将其报告给上游的 mgo 驱动程序。

更新:根据您在下面的评论,问题的产生是因为应用程序的某些部分正在使用不是实际使用的包中的 ObjectId 类型在与数据库通信的过程中。这具有上述效果:就正确的 bson 包而言,来自错误包的 ObjectId 类型只是一个普通字符串。

关于mongodb - mgo NewObjectId 在插入时损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244438/

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