【发布时间】:2021-07-11 12:58:13
【问题描述】:
嗨,派对的人,
我最近开始学习 Go,并开始从事一个小型项目,其中包括使用 Go Fiber 库编写的 API。 所有必需的数据都使用以下模式存储在 MongoDB 中
{
"ObjectId": {
"name": "name",
"url": "url",
"dateAdded": "date",
"data": [{
"timestamp 1": "price 1"
},
{
"timestamp 2": "price 2"
}
]
}
}
项目类型如下所示:
type Item struct {
ID primitive.ObjectID `json:"_id" bson:"_id"`
Name string `json:"name" bson:"name"`
URL string `json:"url" bson:"url"`
DateAdded string `json:"dateAdded" bson:"dateAdded"`
Data []interface{} `json:"data" bson:"data"`
}
每当我使用
查询存储的项目时err = collection.FindOne(context.TODO(), filter).Decode(&item)
数据数组中的每个映射都被包裹在另一个数组中 =>
{ test url 2021-04-16 [[{2021-04-16 99.99}] [{2021-04-17 109.99}]] }
instead of
{ test url 2021-04-16 [{2021-04-16 99.99}, {2021-04-17 109.99}] }
有人知道如何解决这个问题吗? 提前致谢!
【问题讨论】:
-
示例 json 不是有效的 json,这是为什么呢?错字?或者那不应该是 json 而是只类似于 json 的东西?
-
你能分享
item的类型的定义吗? -
我的错,我修复了 JSON(我错误地复制到问题中)并添加了项目的类型
-
架构和检索到的数据看起来确实不一致。但是,检索到的数据是 you 存储在那里的数据,我想,所以在我看来,问题不在于您正在检索的内容,而在于您正在存储的内容。 如何确定您存储的项目与架构一致? 100%?你能展示一下你是如何进行存储的吗?数据在存储之前是什么样子的?
-
我有点确定这个模式是一致的,哈哈。我很确定有很多可能性可以改进这个 JSON 模式,但我上面发布的只是我的一个想法,对我来说,它是有道理的。然而,由于我实际上是一个完整的 Go 和 MongoDB 菜鸟,我不确定这个问题是由 MongoDB、Go 还是 Go-Mongo 驱动程序引起的,这就是我想在这里问的原因。