我试图通过Gogo IDE在MongoDB中插入数据。尽管连接正确,并且在IDE输出中我获得了ObjectID,但仍然无法直接从终端查看结果。看来数据库记录了没有任何信息的新文档...
OSX,MongoDB是默认设置。驱动程序为“ go.mongodb.org/mongo-driver”,连接正确。戈兰(Goland)在2019.2.2
// go
type Student struct {
name string
sex string
}
newStu := Student{
name: "Alice",
sex: "Female",
}
collection := client.Database("mgo_1").Collection("student")
insertResult, err := collection.InsertOne(context.TODO(), newStu)
if err != nil {
log.Fatal(err)
}
fmt.Println(insertResult.InsertedID)
这是插入部分,我遵循了mongodb.com上的指南
> db.student.find()
{ "_id" : ObjectId("5d82d826f5e2f29823900275"), "name" : "Michael", "sex" : "Male" }
{ "_id" : ObjectId("5d82d845b8db68b150894f5a") }
{ "_id" : ObjectId("5d82dc2952c638d0970e9356") }
{ "_id" : ObjectId("5d82dcde8cf407b2fb5649e7") }
这是我在另一个终端中查询的结果。除了第一个具有某些内容的内容外,其他三个是我尝试通过Goland插入数据库三次的内容。
答案 0 :(得分:0)
所以您的结构看起来像这样:
type Student struct {
name string
sex string
}
name
和sex
字段不是以大写字母开头,因此它们不会被导出,因此对反射不可见。 InsertOne
无疑使用反射来找出newStu
中的内容,但是Student
结构没有导出的字段,因此InsertOne
根本看不到newStu
中的任何字段
如果您将结构修复为具有导出字段,则:
type Student struct {
Name string
Sex string
}
然后InsertOne
将能够找出其中的内容。 MongoDB界面应自行计算从Name
(转到)到name
(MongoDB)以及从Sex
到sex
的映射。