- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试从具有动态键的 MongoDB 中获取数据并将其设置在一个 slice 中。
这是我的数据样本:
_id ObjectIdHex("5911786dc28f25578150501d")
2017-05-01 [800 1000 1200 1400 1600]
_id ObjectIdHex("59117897c28f25578150501e")
2017-05-02 [800 1000 1200 1400 1600]
_id ObjectIdHex("5911789ec28f25578150501f")
2017-05-03 [800 1000 1200 1400 1600]
2017-05-04 [800 1000 1200 1400 1600]
_id ObjectIdHex("591178a6c28f255781505020")
_id ObjectIdHex("591178abc28f255781505021")
2017-05-05 [800 1000 1200 1400 1600]
_id ObjectIdHex("591178b0c28f255781505022")
2017-05-06 [800 1000 1200 1400 1600]
_id ObjectIdHex("591178b5c28f255781505023")
2017-05-07 [800 1000 1200 1400 1600]
_id ObjectIdHex("591178bac28f255781505024")
2017-05-08 [800 1000 1200 1400 1600]
_id ObjectIdHex("591178c8c28f255781505025")
2017-05-09 [800 1000 1200 1400 1600]
2017-05-10 [800 1000 1200 1400 1600]
我需要将其设置为类似 {2017-05-09 : [800 1000 1200 1400 1600]}
的数组,其他条目也一样。
我试过了
package main
import(
"fmt"
"gopkg.in/mgo.v2/bson"
//"encoding/json"
)
type Spot struct{
Id bson.ObjectId `json:"_id,omitempty" bson:"_id,omitempty"`
Spots map[string]interface{} `json:"spots"`
}
//type Values []Value
//var result []struct{ Value int }
type Spots []Spot
func getAllSpots() (Spots) {
mongoSession := getDbSession()
sessionCopy := mongoSession.Copy()
defer sessionCopy.Close()
var spots []Spot
c := mongoSession.DB("test").C("spots")
var data []bson.M
err := c.Find(bson.M{}).All(&data)
if err != nil {
panic(err)
// TODO: Do something about the error
}
test := make(map[string]int)
for _, doc := range data {
for key, value := range doc {
if(key == "_id"){
test[key] = value
fmt.Println(key, value)
}
}
}
return spots
}
我能够获取数据中的点,并能够使用 fmt.Println()
将输出写入控制台,但是当我将它分配给一个 slice 时,它会出现以下错误:
cannot use value (type interface {}) as type int in assignment: need type assertion
我在整个网络上进行了搜索,但找不到有效的解决方案。谁能指导我做错了什么?
最佳答案
如果您查看 bson.M
的文档,您会看到它只是 map[string]interface{}
的别名。这意味着当您对其进行范围
时,您的键是一个字符串
,您的值是一个接口(interface){}
。您的目标是 map[string]int
。因此,当您 test[key] = value
时,您试图将 value
(interface{}
)分配给需要 的东西>int
,如果没有显式转换(又名 type assertion ),您将无法做到这一点。这正是错误消息所说的:不能将值(类型接口(interface) {})用作赋值中的类型 int:需要类型断言
。你可以改为:
test[key] = value.(int)
但正如 putu 指出的那样,看起来这些值实际上是 int
的数组,根本不适合 test
类型,因为它是字符串映射到单个 int
值。因此,您需要将 test
的类型更改为 map[string][]int
或从源数组中选择一个值以存储在 map 中,例如
test[key] = (value.([]int))[0]
关于mongodb - 如何设置 slice 中的所有数据,使用 mgo 从 mongodb 获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43915387/
我最近开始学习 Go,到目前为止我非常喜欢它。我想了解如何使用 mgo Mongo 驱动程序制作 REST API。 在网站上,共有三个API:mgo、mgo/bson、mgo/txn。它们是什么意思
我有一个 GoLang 代码: c.Find(selectQuery).All(&results) if err == mgo.ErrNotFound { // error handling } se
我有一组动态的成分名称,并为每个用户提供。我想将它与 mongo 文档匹配,其中有一个名为 ingredients 的对象的 array 具有属性 name。我已经编写了一个查询(见下文),它将从 U
我 我很难将 MongoDB 查询转换为 mgo bson。 Mongo 记录模式如下所示。我想查找主题标签为“教育”和“学生”的记录。 db.questions.insert ( {
我正在尝试使用 mgo 库进行批量更新插入。我正在阅读 documentation关于批量更新插入,因为这是我第一次使用 MongoDB,看起来我必须提供成对的文档才能更新。 在我的函数中,我正在执行
我一直在为我的 API 使用 mgo,但我在我的 MongoDB 中看到许多当前连接(同时使用少于 5 个设备进行测试)。通过在我的 Mongo 服务器中执行 db.serverStatus().co
我正在尝试检索以下数据中每个 object_name 的最早创建日期和最后修改日期 { "_id" : ObjectId("5a510666b2e543371cff44ef"), "object_na
我是 Golang 的新手,我正在使用 mgo 框架构建 Golang CRUD 来练习。当我使用 mgo 插入一个元素时,插入了两次而不是一次,我在 MongoDB Compass 社区中检查了它。
我正在从事一个基于 MongoDB 数据结构的项目。我们存储在数据库中的对象如下所示: { "_id" : ObjectId("567a877df1c7720bea7c2f51"), "usernam
我正在尝试使用 golang mgo 执行查询为了有效地从连接中获得不同的值,我知道这可能不是在 Mongo 中使用的最佳范例。 像这样: pipe := []bson.M{ {
我的目标是实现这个 code .除了不使用 sql,我想使用 mongoDB。我认为我处理 session 的方式存在问题。 我正在尝试使用 mgo 通过 Rest API 将一些用户数据插入到 Mo
我正在尝试使用 Go 中的 mgo 库实现以下功能: db.artists.update( {_id: ObjectId("534944125117082b30000001")}, {
我的 Go 应用程序已使用 MGO 连接到 MongoDB(托管在 Compose.io 上),没有任何问题。 今天我决定删除这个数据库并添加一个不同的数据库(再次使用 Compose)。我更新了连接
我有这个模型数据,我用它来将数据保存到数据库中 type Nos struct { UnitCode string `json:"unitCode" bson:"unitCode
我正在用 mgo 编写一个数据库接口(interface)。我的模型中的某些文档引用了其他文档。 type Child struct{ Id bson.ObjectId `js
我有一个查询,它从包含特定文本的集合文档中返回所有名称。在以下示例中,不区分大小写地返回所有包含序列“oh”的名称;不返回文档中的其他字段: find({name:/oh/i}, {name:1, _
我使用以下 go 文件作为我的 http API 和 mgo 之间的层: package store import ( "reflect" "strings" "labix.o
我正在编写一个快速写入 mongodb 的应用程序。 mongodb 和 mgo 处理得太快了。我的问题是,有没有办法让我确定 mongo 跟不上并开始阻塞?但我也不想无谓地阻止。以下是模拟问题的代码
我有以下代码: competitionMatch := bson.M{ "$match": bson.M{"competition" : bson.M{"$in" : []string{"PREMIE
下面我设计了文档结构如下: type MIS_Course struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string
我是一名优秀的程序员,十分优秀!