Mongodb 按id从集合中检索文档

Mongodb 按id从集合中检索文档,mongodb,go,bson,mgo,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.Inser

我收藏的物品:

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)
在收藏中插入:

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 ObjectIdHex("52024f457a7ea6334d000001"):
&{Id:ObjectIdHex("52024f457a7ea6334d000001") Name:test}
正在从集合中检索(按id):


这会抛出“not found”(未找到),我不知道为什么。

根据
reflect
包,字段的不同键值标记应该用空格隔开

按照惯例,标记字符串是可选的空格分隔键:“值”对的串联。每个键都是非空字符串,由空格(U+0020’)、引号(U+0022’)和冒号(U+003A’:’)以外的非控制字符组成。每个值都使用U+0022’’字符和Go字符串文字语法引用


mgo
程序包无法读取标签,并将Id值存储为
Id
,而不是
\u Id

您的代码看起来是正确的。我只是想知道空格是否是分隔json和bson字段标记的正确方法?检查MongoDB控制台,确保Room.Id以
\u Id
而不是
Id
作为字段名存储。通常它是comma@tomwilde:是的,但在reflect包中,它表示它是
可选的空格分隔的
。Ondrej可以尝试使用单个空格而不是多个空格。你是对的,是制表符导致了问题。谢谢。啊,很高兴知道。我加了一个答案:)