mongodb - 通过id从集合中检索文档

标签 mongodb go bson mgo

我收藏的元素:

type Room struct {
    Id bson.ObjectId            `json:"Id"                  bson:"_id"`
    Name string                 `json:"Name"                bson:"name"`
}

插入集合:

room = &Room{Id: bson.NewObjectId(), Name: "test"}
RoomCollection.Insert(room)

从集合中检索(任何):

roomX := &Room{}
if err := RoomCollection.Find(bson.M{}).One(roomX); err != nil {
    panic(err)
}
fmt.Printf("RoomX %s:\n%+v\n\n", roomX.Id, roomX)

输出:

RoomX ObjectIdHex("52024f457a7ea6334d000001"):
&{Id:ObjectIdHex("52024f457a7ea6334d000001") Name:test}

从集合中检索(通过 ID):

roomZ := &Room{}
if err := RoomCollection.Find(bson.M{"_id": room.Id}).One(roomZ); err != nil {
    panic(err) // throws "not found"
}

这会抛出“未找到”,我不明白为什么。

最佳答案

根据 reflect 包,字段的不同键值标记应以空格分隔。

By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs. Each key is a non-empty string consisting of non-control characters other than space (U+0020 ' '), quote (U+0022 '"'), and colon (U+003A ':'). Each value is quoted using U+0022 '"' characters and Go string literal syntax.

mgo包无法读取标签,并将 Id 值存储为 id 而不是 _id

关于mongodb - 通过id从集合中检索文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105411/

相关文章:

database - 如何仅查找mongo中的特定字段

python - 如何使用 MongoEngine 将 MySQL 数据库转移到 MongoDB?

javascript - 响应中搜索词的匹配列表

templates - Golang索引模板包括

mysql - 如何在 Jinzhu GORM 中创建 Left Join

java - 如何使用 Spring Data Mongo DB 对类进行建模来存储具有不同长度字段和类型的嵌套 JSON 文档

javascript - 使用 mongorestore 将许多文档插入临时集合

Mongodb:如何获取子集合列表

amazon-web-services - 如何在 Go 中验证来自 AWS Cognito 的 JWT token ?

go - 如何在 Go 中将 bson.Binary 转换为 []byte