我是mongodb-go-driver的新手。但是我被困住了。
cursor, e := collection.Find(context.Background(), bson.NewDocument(bson.EC.String("name", id)))
for cursor.Next(context.Background()) {
e := bson.NewDocument()
cursor.Decode(e)
b, _ := e.MarshalBSON()
err := bson.Unmarshal(b, m[id])
}
查看m [id]的内容时,它没有内容-全部为null。
我的地图是这样的:m map [string] Language
语言定义如下:
type Language struct {
ID string `json:"id" bson:"_id"` // is this wrong?
Name string `json:"name" bson:"name"`
Vowels []string `json:"vowels" bson:"vowels"`
Consonants []string `json:"consonants" bson:"consonants"`
}
我究竟做错了什么?
我正在使用此示例进行学习:https :
//github.com/mongodb/mongo-go-
driver/blob/master/examples/documentation_examples/examples.go
正式的MongoDB驱动程序对MongoDB ObjectId使用objectid.ObjectID类型。此类型是:
type ObjectID [12]byte
因此,您需要将结构更改为:
type Language struct {
ID objectid.ObjectID `json:"id" bson:"_id"`
Name string `json:"name" bson:"name"`
Vowels []string `json:"vowels" bson:"vowels"`
Consonants []string `json:"consonants" bson:"consonants"`
}
我在以下方面取得了成功:
m := make(map[string]Language)
cursor, e := collection.Find(context.Background(), bson.NewDocument(bson.EC.String("name", id)))
for cursor.Next(context.Background()) {
l := Language{}
err := cursor.Decode(&l)
if err != nil {
//handle err
}
m[id] = l // you need to handle this in a for loop or something... I'm assuming there is only one result per id
}
问题内容: 我正在使用https://github.com/mongodb/mongo-go- driver ,目前正在尝试实现这种结构的部分更新 例如,如果我有 然后,我希望存储文档中唯一的“标题”字段将被更改。 我需要写类似 问题是我不想用或手动编码每个非空字段。我尝试使用但出现错误 无法为* models.NoteUpdate类型创建元素,请尝试使用bsoncodec.ConstructEl
问题内容: 我有一个这样的结构: 但是,即使MyStruct实例完全为空(意味着所有值都是默认值),它也会被序列化为: 我知道encoding / json文档指定“空”字段为: false,0,任何nil指针或接口值以及任何长度为零的数组,切片,映射或字符串 但不考虑具有所有空/默认值的结构。它的所有字段也都标有,但这无效。 如何获取JSON包以 不 封送我的字段为空结构? 问题答案: 正如文档
问题内容: 我想将mongo-go-driver中的 bson转换为json。 我应该小心处理,因为如果数据中存在则失败。 例如,我想将以下bson数据转换为json。 以下失败。 问题答案: 如果您知道BSON的结构,则可以创建一个实现和接口的自定义类型,并根据需要处理NaN。例: 如果您的BSON具有任意结构,则唯一的选择是使用反射遍历该结构,并将所有出现的NaN转换为类型(可能是如上所述的自
问题内容: 我正在寻找的等效于Document.parse() 在golang中,这允许我直接从json创建bson吗?我不想创建用于编组的中间Go结构 问题答案: 该程序包有一个名为的函数,它可以完全满足您的需求。 该参数应包含JSON字符串作为值。 UnmarshalJSON解组一个JSON值,该值可能包含BSON扩展JSON规范中定义的非标准语法。 例:
问题内容: 我是Go的新手,现在遇到了问题。我有一个称为Message的类型,它是这样的结构: 我也有一个名为CreateMessage的类型,如下所示: 我有一个像的JSON字符串。 当我用来将其解码为Message变量时,答案是。 因此,我可以将JSON解码为Message结构并更改其Data的接口{}以根据Cmd键入CreateMessage吗? 我试图将Data直接转换为CreateMes
编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我有一个Json: 我不知道如何将元帅行星字段解构到map[string]int中,所以我可以访问元素而无需像这个例子中那样取消marshade:json来映射Golang 代码如下: fmt.Println(user.Planets.Planet[“地球])-返回 fmt.Println(user.Pl